diff options
-rw-r--r-- | drivers/net/pptp.c | 2 | ||||
-rw-r--r-- | include/net/dst.h | 6 | ||||
-rw-r--r-- | include/net/ip.h | 10 | ||||
-rw-r--r-- | include/net/route.h | 11 | ||||
-rw-r--r-- | net/ipv4/devinet.c | 6 | ||||
-rw-r--r-- | net/ipv4/ip_gre.c | 2 | ||||
-rw-r--r-- | net/ipv4/ip_output.c | 3 | ||||
-rw-r--r-- | net/ipv4/netfilter/ipt_REJECT.c | 2 | ||||
-rw-r--r-- | net/ipv4/route.c | 2 | ||||
-rw-r--r-- | net/ipv4/sysctl_net_ipv4.c | 2 | ||||
-rw-r--r-- | net/ipv4/xfrm4_mode_tunnel.c | 2 |
11 files changed, 21 insertions, 27 deletions
diff --git a/drivers/net/pptp.c b/drivers/net/pptp.c index c83e168eef21..164cfad6ce79 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_hoplimit(&rt->dst); | 280 | iph->ttl = ip4_dst_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 9208b500aaaf..755ac6c1aa03 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -116,12 +116,6 @@ dst_metric(const struct dst_entry *dst, const int metric) | |||
116 | return dst_metric_raw(dst, metric); | 116 | return dst_metric_raw(dst, metric); |
117 | } | 117 | } |
118 | 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 | |||
125 | static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val) | 119 | static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val) |
126 | { | 120 | { |
127 | dst->_metrics[metric-1] = val; | 121 | dst->_metrics[metric-1] = val; |
diff --git a/include/net/ip.h b/include/net/ip.h index 86e2b182a0c0..67fac78a186b 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -201,7 +201,6 @@ static inline int inet_is_reserved_local_port(int port) | |||
201 | return test_bit(port, sysctl_local_reserved_ports); | 201 | return test_bit(port, sysctl_local_reserved_ports); |
202 | } | 202 | } |
203 | 203 | ||
204 | extern int sysctl_ip_default_ttl; | ||
205 | extern int sysctl_ip_nonlocal_bind; | 204 | extern int sysctl_ip_nonlocal_bind; |
206 | 205 | ||
207 | extern struct ctl_path net_core_path[]; | 206 | extern struct ctl_path net_core_path[]; |
@@ -428,15 +427,6 @@ extern void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, | |||
428 | extern void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 dport, | 427 | extern void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 dport, |
429 | u32 info); | 428 | u32 info); |
430 | 429 | ||
431 | /* sysctl helpers - any sysctl which holds a value that ends up being | ||
432 | * fed into the routing cache should use these handlers. | ||
433 | */ | ||
434 | int ipv4_doint_and_flush(ctl_table *ctl, int write, | ||
435 | void __user *buffer, | ||
436 | size_t *lenp, loff_t *ppos); | ||
437 | int ipv4_doint_and_flush_strategy(ctl_table *table, | ||
438 | void __user *oldval, size_t __user *oldlenp, | ||
439 | void __user *newval, size_t newlen); | ||
440 | #ifdef CONFIG_PROC_FS | 430 | #ifdef CONFIG_PROC_FS |
441 | extern int ip_misc_proc_init(void); | 431 | extern int ip_misc_proc_init(void); |
442 | #endif | 432 | #endif |
diff --git a/include/net/route.h b/include/net/route.h index b8c1f7703fc6..27002362944a 100644 --- a/include/net/route.h +++ b/include/net/route.h | |||
@@ -231,4 +231,15 @@ static inline int inet_iif(const struct sk_buff *skb) | |||
231 | return skb_rtable(skb)->rt_iif; | 231 | return skb_rtable(skb)->rt_iif; |
232 | } | 232 | } |
233 | 233 | ||
234 | extern int sysctl_ip_default_ttl; | ||
235 | |||
236 | static inline int ip4_dst_hoplimit(const struct dst_entry *dst) | ||
237 | { | ||
238 | int hoplimit = dst_metric_raw(dst, RTAX_HOPLIMIT); | ||
239 | |||
240 | if (hoplimit == 0) | ||
241 | hoplimit = sysctl_ip_default_ttl; | ||
242 | return hoplimit; | ||
243 | } | ||
244 | |||
234 | #endif /* _ROUTE_H */ | 245 | #endif /* _ROUTE_H */ |
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 3b067704ab38..748cb5b337bd 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -1430,9 +1430,9 @@ static int devinet_sysctl_forward(ctl_table *ctl, int write, | |||
1430 | return ret; | 1430 | return ret; |
1431 | } | 1431 | } |
1432 | 1432 | ||
1433 | int ipv4_doint_and_flush(ctl_table *ctl, int write, | 1433 | static int ipv4_doint_and_flush(ctl_table *ctl, int write, |
1434 | void __user *buffer, | 1434 | void __user *buffer, |
1435 | size_t *lenp, loff_t *ppos) | 1435 | size_t *lenp, loff_t *ppos) |
1436 | { | 1436 | { |
1437 | int *valp = ctl->data; | 1437 | int *valp = ctl->data; |
1438 | int val = *valp; | 1438 | int val = *valp; |
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 46eb3dc37ec6..eb68a0e34e49 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_hoplimit(&rt->dst); | 893 | iph->ttl = ip4_dst_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 ea28fa5f1992..04c7b3ba6b39 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -82,6 +82,7 @@ | |||
82 | #include <linux/tcp.h> | 82 | #include <linux/tcp.h> |
83 | 83 | ||
84 | int sysctl_ip_default_ttl __read_mostly = IPDEFTTL; | 84 | int sysctl_ip_default_ttl __read_mostly = IPDEFTTL; |
85 | EXPORT_SYMBOL(sysctl_ip_default_ttl); | ||
85 | 86 | ||
86 | /* Generate a checksum for an outgoing IP datagram. */ | 87 | /* Generate a checksum for an outgoing IP datagram. */ |
87 | __inline__ void ip_send_check(struct iphdr *iph) | 88 | __inline__ void ip_send_check(struct iphdr *iph) |
@@ -130,7 +131,7 @@ static inline int ip_select_ttl(struct inet_sock *inet, struct dst_entry *dst) | |||
130 | int ttl = inet->uc_ttl; | 131 | int ttl = inet->uc_ttl; |
131 | 132 | ||
132 | if (ttl < 0) | 133 | if (ttl < 0) |
133 | ttl = dst_metric_hoplimit(dst); | 134 | ttl = ip4_dst_hoplimit(dst); |
134 | return ttl; | 135 | return ttl; |
135 | } | 136 | } |
136 | 137 | ||
diff --git a/net/ipv4/netfilter/ipt_REJECT.c b/net/ipv4/netfilter/ipt_REJECT.c index f1309072c541..1ff79e557f96 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_hoplimit(skb_dst(nskb)); | 119 | niph->ttl = ip4_dst_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 90b5a37555ab..770f70427f0b 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1821,8 +1821,6 @@ 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_raw(dst, RTAX_HOPLIMIT) == 0) | ||
1825 | dst_metric_set(dst, RTAX_HOPLIMIT, sysctl_ip_default_ttl); | ||
1826 | if (dst_mtu(dst) > IP_MAX_MTU) | 1824 | if (dst_mtu(dst) > IP_MAX_MTU) |
1827 | dst_metric_set(dst, RTAX_MTU, IP_MAX_MTU); | 1825 | dst_metric_set(dst, RTAX_MTU, IP_MAX_MTU); |
1828 | if (dst_metric(dst, RTAX_ADVMSS) == 0) | 1826 | if (dst_metric(dst, RTAX_ADVMSS) == 0) |
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 1b4ec21497a4..e85ff5930607 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c | |||
@@ -155,7 +155,7 @@ static struct ctl_table ipv4_table[] = { | |||
155 | .data = &sysctl_ip_default_ttl, | 155 | .data = &sysctl_ip_default_ttl, |
156 | .maxlen = sizeof(int), | 156 | .maxlen = sizeof(int), |
157 | .mode = 0644, | 157 | .mode = 0644, |
158 | .proc_handler = ipv4_doint_and_flush, | 158 | .proc_handler = proc_dointvec, |
159 | .extra2 = &init_net, | 159 | .extra2 = &init_net, |
160 | }, | 160 | }, |
161 | { | 161 | { |
diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c index 63b854e74d99..534972e114ac 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_hoplimit(dst->child); | 59 | top_iph->ttl = ip4_dst_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; |