diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-05-10 07:32:55 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-17 20:18:51 -0400 |
commit | 407eadd996dc62a827db85f1d0c286a98fd5d336 (patch) | |
tree | 199b695cd045650b939aab61cbb55c31d9165b4e /include/net | |
parent | 7fee226ad2397b635e2fd565a59ca3ae08a164cd (diff) |
net: implements ip_route_input_noref()
ip_route_input() is the version returning a refcounted dst, while
ip_route_input_noref() returns a non refcounted one.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/route.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/include/net/route.h b/include/net/route.h index 2c9fba7f7731..af6cf4b4c9dc 100644 --- a/include/net/route.h +++ b/include/net/route.h | |||
@@ -112,7 +112,22 @@ extern void rt_cache_flush_batch(void); | |||
112 | extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp); | 112 | extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp); |
113 | extern int ip_route_output_key(struct net *, struct rtable **, struct flowi *flp); | 113 | extern int ip_route_output_key(struct net *, struct rtable **, struct flowi *flp); |
114 | extern int ip_route_output_flow(struct net *, struct rtable **rp, struct flowi *flp, struct sock *sk, int flags); | 114 | extern int ip_route_output_flow(struct net *, struct rtable **rp, struct flowi *flp, struct sock *sk, int flags); |
115 | extern int ip_route_input(struct sk_buff*, __be32 dst, __be32 src, u8 tos, struct net_device *devin); | 115 | |
116 | extern int ip_route_input_common(struct sk_buff *skb, __be32 dst, __be32 src, | ||
117 | u8 tos, struct net_device *devin, bool noref); | ||
118 | |||
119 | static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src, | ||
120 | u8 tos, struct net_device *devin) | ||
121 | { | ||
122 | return ip_route_input_common(skb, dst, src, tos, devin, false); | ||
123 | } | ||
124 | |||
125 | static inline int ip_route_input_noref(struct sk_buff *skb, __be32 dst, __be32 src, | ||
126 | u8 tos, struct net_device *devin) | ||
127 | { | ||
128 | return ip_route_input_common(skb, dst, src, tos, devin, true); | ||
129 | } | ||
130 | |||
116 | extern unsigned short ip_rt_frag_needed(struct net *net, struct iphdr *iph, unsigned short new_mtu, struct net_device *dev); | 131 | extern unsigned short ip_rt_frag_needed(struct net *net, struct iphdr *iph, unsigned short new_mtu, struct net_device *dev); |
117 | extern void ip_rt_send_redirect(struct sk_buff *skb); | 132 | extern void ip_rt_send_redirect(struct sk_buff *skb); |
118 | 133 | ||