diff options
author | David S. Miller <davem@davemloft.net> | 2010-12-13 00:35:57 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-13 00:35:57 -0500 |
commit | 5170ae824ddf1988a63fb12cbedcff817634c444 (patch) | |
tree | 9f1619ca6edd0e8078bfcd9d6123e119b935e43b | |
parent | abbf46ae0e4954584eac599bec73502c1c805e9e (diff) |
net: Abstract RTAX_HOPLIMIT metric accesses behind helper.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/pptp.c | 2 | ||||
-rw-r--r-- | include/net/dst.h | 15 | ||||
-rw-r--r-- | net/ipv4/ip_gre.c | 2 | ||||
-rw-r--r-- | net/ipv4/ip_output.c | 2 | ||||
-rw-r--r-- | net/ipv4/netfilter/ipt_REJECT.c | 2 | ||||
-rw-r--r-- | net/ipv4/route.c | 2 | ||||
-rw-r--r-- | net/ipv4/xfrm4_mode_tunnel.c | 2 | ||||
-rw-r--r-- | net/ipv6/route.c | 4 |
8 files changed, 22 insertions, 9 deletions
diff --git a/drivers/net/pptp.c b/drivers/net/pptp.c index 7556a9224f72..c83e168eef21 100644 --- a/drivers/net/pptp.c +++ b/drivers/net/pptp.c | |||
@@ -277,7 +277,7 @@ static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
277 | iph->tos = 0; | 277 | iph->tos = 0; |
278 | iph->daddr = rt->rt_dst; | 278 | iph->daddr = rt->rt_dst; |
279 | iph->saddr = rt->rt_src; | 279 | iph->saddr = rt->rt_src; |
280 | iph->ttl = dst_metric(&rt->dst, RTAX_HOPLIMIT); | 280 | iph->ttl = dst_metric_hoplimit(&rt->dst); |
281 | iph->tot_len = htons(skb->len); | 281 | iph->tot_len = htons(skb->len); |
282 | 282 | ||
283 | skb_dst_drop(skb); | 283 | skb_dst_drop(skb); |
diff --git a/include/net/dst.h b/include/net/dst.h index 85dee3a57b9b..9208b500aaaf 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -104,11 +104,24 @@ struct dst_entry { | |||
104 | #ifdef __KERNEL__ | 104 | #ifdef __KERNEL__ |
105 | 105 | ||
106 | static inline u32 | 106 | static inline u32 |
107 | dst_metric(const struct dst_entry *dst, int metric) | 107 | dst_metric_raw(const struct dst_entry *dst, const int metric) |
108 | { | 108 | { |
109 | return dst->_metrics[metric-1]; | 109 | return dst->_metrics[metric-1]; |
110 | } | 110 | } |
111 | 111 | ||
112 | static inline u32 | ||
113 | dst_metric(const struct dst_entry *dst, const int metric) | ||
114 | { | ||
115 | WARN_ON_ONCE(metric == RTAX_HOPLIMIT); | ||
116 | return dst_metric_raw(dst, metric); | ||
117 | } | ||
118 | |||
119 | static inline u32 | ||
120 | dst_metric_hoplimit(const struct dst_entry *dst) | ||
121 | { | ||
122 | return dst_metric_raw(dst, RTAX_HOPLIMIT); | ||
123 | } | ||
124 | |||
112 | static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val) | 125 | static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val) |
113 | { | 126 | { |
114 | dst->_metrics[metric-1] = val; | 127 | dst->_metrics[metric-1] = val; |
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index ff4e7a4e33ed..46eb3dc37ec6 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c | |||
@@ -890,7 +890,7 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev | |||
890 | iph->ttl = ((struct ipv6hdr *)old_iph)->hop_limit; | 890 | iph->ttl = ((struct ipv6hdr *)old_iph)->hop_limit; |
891 | #endif | 891 | #endif |
892 | else | 892 | else |
893 | iph->ttl = dst_metric(&rt->dst, RTAX_HOPLIMIT); | 893 | iph->ttl = dst_metric_hoplimit(&rt->dst); |
894 | } | 894 | } |
895 | 895 | ||
896 | ((__be16 *)(iph + 1))[0] = tunnel->parms.o_flags; | 896 | ((__be16 *)(iph + 1))[0] = tunnel->parms.o_flags; |
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 5090c7ff525e..ea28fa5f1992 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -130,7 +130,7 @@ static inline int ip_select_ttl(struct inet_sock *inet, struct dst_entry *dst) | |||
130 | int ttl = inet->uc_ttl; | 130 | int ttl = inet->uc_ttl; |
131 | 131 | ||
132 | if (ttl < 0) | 132 | if (ttl < 0) |
133 | ttl = dst_metric(dst, RTAX_HOPLIMIT); | 133 | ttl = dst_metric_hoplimit(dst); |
134 | return ttl; | 134 | return ttl; |
135 | } | 135 | } |
136 | 136 | ||
diff --git a/net/ipv4/netfilter/ipt_REJECT.c b/net/ipv4/netfilter/ipt_REJECT.c index 43eec80c0e7c..f1309072c541 100644 --- a/net/ipv4/netfilter/ipt_REJECT.c +++ b/net/ipv4/netfilter/ipt_REJECT.c | |||
@@ -116,7 +116,7 @@ static void send_reset(struct sk_buff *oldskb, int hook) | |||
116 | if (ip_route_me_harder(nskb, addr_type)) | 116 | if (ip_route_me_harder(nskb, addr_type)) |
117 | goto free_nskb; | 117 | goto free_nskb; |
118 | 118 | ||
119 | niph->ttl = dst_metric(skb_dst(nskb), RTAX_HOPLIMIT); | 119 | niph->ttl = dst_metric_hoplimit(skb_dst(nskb)); |
120 | 120 | ||
121 | /* "Never happens" */ | 121 | /* "Never happens" */ |
122 | if (nskb->len > dst_mtu(skb_dst(nskb))) | 122 | if (nskb->len > dst_mtu(skb_dst(nskb))) |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 26ac396eaa5e..90b5a37555ab 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1821,7 +1821,7 @@ static void rt_set_nexthop(struct rtable *rt, struct fib_result *res, u32 itag) | |||
1821 | } else | 1821 | } else |
1822 | dst_metric_set(dst, RTAX_MTU, dst->dev->mtu); | 1822 | dst_metric_set(dst, RTAX_MTU, dst->dev->mtu); |
1823 | 1823 | ||
1824 | if (dst_metric(dst, RTAX_HOPLIMIT) == 0) | 1824 | if (dst_metric_raw(dst, RTAX_HOPLIMIT) == 0) |
1825 | dst_metric_set(dst, RTAX_HOPLIMIT, sysctl_ip_default_ttl); | 1825 | dst_metric_set(dst, RTAX_HOPLIMIT, sysctl_ip_default_ttl); |
1826 | if (dst_mtu(dst) > IP_MAX_MTU) | 1826 | if (dst_mtu(dst) > IP_MAX_MTU) |
1827 | dst_metric_set(dst, RTAX_MTU, IP_MAX_MTU); | 1827 | dst_metric_set(dst, RTAX_MTU, IP_MAX_MTU); |
diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c index 6f368413eb0e..63b854e74d99 100644 --- a/net/ipv4/xfrm4_mode_tunnel.c +++ b/net/ipv4/xfrm4_mode_tunnel.c | |||
@@ -56,7 +56,7 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) | |||
56 | 0 : (XFRM_MODE_SKB_CB(skb)->frag_off & htons(IP_DF)); | 56 | 0 : (XFRM_MODE_SKB_CB(skb)->frag_off & htons(IP_DF)); |
57 | ip_select_ident(top_iph, dst->child, NULL); | 57 | ip_select_ident(top_iph, dst->child, NULL); |
58 | 58 | ||
59 | top_iph->ttl = dst_metric(dst->child, RTAX_HOPLIMIT); | 59 | top_iph->ttl = dst_metric_hoplimit(dst->child); |
60 | 60 | ||
61 | top_iph->saddr = x->props.saddr.a4; | 61 | top_iph->saddr = x->props.saddr.a4; |
62 | top_iph->daddr = x->id.daddr.a4; | 62 | top_iph->daddr = x->id.daddr.a4; |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 9b2d7bc7beda..d9405d1863b8 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -1104,7 +1104,7 @@ static int ipv6_get_mtu(struct net_device *dev) | |||
1104 | 1104 | ||
1105 | int ip6_dst_hoplimit(struct dst_entry *dst) | 1105 | int ip6_dst_hoplimit(struct dst_entry *dst) |
1106 | { | 1106 | { |
1107 | int hoplimit = dst_metric(dst, RTAX_HOPLIMIT); | 1107 | int hoplimit = dst_metric_raw(dst, RTAX_HOPLIMIT); |
1108 | if (hoplimit < 0) { | 1108 | if (hoplimit < 0) { |
1109 | struct net_device *dev = dst->dev; | 1109 | struct net_device *dev = dst->dev; |
1110 | struct inet6_dev *idev; | 1110 | struct inet6_dev *idev; |
@@ -1310,7 +1310,7 @@ install_route: | |||
1310 | } | 1310 | } |
1311 | } | 1311 | } |
1312 | 1312 | ||
1313 | if (dst_metric(&rt->dst, RTAX_HOPLIMIT) == 0) | 1313 | if (dst_metric_raw(&rt->dst, RTAX_HOPLIMIT) == 0) |
1314 | dst_metric_set(&rt->dst, RTAX_HOPLIMIT, -1); | 1314 | dst_metric_set(&rt->dst, RTAX_HOPLIMIT, -1); |
1315 | if (!dst_mtu(&rt->dst)) | 1315 | if (!dst_mtu(&rt->dst)) |
1316 | dst_metric_set(&rt->dst, RTAX_MTU, ipv6_get_mtu(dev)); | 1316 | dst_metric_set(&rt->dst, RTAX_MTU, ipv6_get_mtu(dev)); |