aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/ip6_route.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/ip6_route.h')
-rw-r--r--include/net/ip6_route.h98
1 files changed, 43 insertions, 55 deletions
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
index 2b786b7e3585..733747ce163c 100644
--- a/include/net/ip6_route.h
+++ b/include/net/ip6_route.h
@@ -51,7 +51,7 @@ static inline unsigned int rt6_flags2srcprefs(int flags)
51 return (flags >> 3) & 7; 51 return (flags >> 3) & 7;
52} 52}
53 53
54extern void rt6_bind_peer(struct rt6_info *rt, int create); 54void rt6_bind_peer(struct rt6_info *rt, int create);
55 55
56static inline struct inet_peer *__rt6_get_peer(struct rt6_info *rt, int create) 56static inline struct inet_peer *__rt6_get_peer(struct rt6_info *rt, int create)
57{ 57{
@@ -72,70 +72,58 @@ static inline struct inet_peer *rt6_get_peer_create(struct rt6_info *rt)
72 return __rt6_get_peer(rt, 1); 72 return __rt6_get_peer(rt, 1);
73} 73}
74 74
75extern void ip6_route_input(struct sk_buff *skb); 75void ip6_route_input(struct sk_buff *skb);
76 76
77extern struct dst_entry * ip6_route_output(struct net *net, 77struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk,
78 const struct sock *sk, 78 struct flowi6 *fl6);
79 struct flowi6 *fl6); 79struct dst_entry *ip6_route_lookup(struct net *net, struct flowi6 *fl6,
80extern struct dst_entry * ip6_route_lookup(struct net *net, 80 int flags);
81 struct flowi6 *fl6, int flags);
82 81
83extern int ip6_route_init(void); 82int ip6_route_init(void);
84extern void ip6_route_cleanup(void); 83void ip6_route_cleanup(void);
85 84
86extern int ipv6_route_ioctl(struct net *net, 85int ipv6_route_ioctl(struct net *net, unsigned int cmd, void __user *arg);
87 unsigned int cmd,
88 void __user *arg);
89 86
90extern int ip6_route_add(struct fib6_config *cfg); 87int ip6_route_add(struct fib6_config *cfg);
91extern int ip6_ins_rt(struct rt6_info *); 88int ip6_ins_rt(struct rt6_info *);
92extern int ip6_del_rt(struct rt6_info *); 89int ip6_del_rt(struct rt6_info *);
93 90
94extern int ip6_route_get_saddr(struct net *net, 91int ip6_route_get_saddr(struct net *net, struct rt6_info *rt,
95 struct rt6_info *rt, 92 const struct in6_addr *daddr, unsigned int prefs,
96 const struct in6_addr *daddr, 93 struct in6_addr *saddr);
97 unsigned int prefs,
98 struct in6_addr *saddr);
99 94
100extern struct rt6_info *rt6_lookup(struct net *net, 95struct rt6_info *rt6_lookup(struct net *net, const struct in6_addr *daddr,
101 const struct in6_addr *daddr, 96 const struct in6_addr *saddr, int oif, int flags);
102 const struct in6_addr *saddr,
103 int oif, int flags);
104 97
105extern struct dst_entry *icmp6_dst_alloc(struct net_device *dev, 98struct dst_entry *icmp6_dst_alloc(struct net_device *dev, struct flowi6 *fl6);
106 struct flowi6 *fl6); 99int icmp6_dst_gc(void);
107extern int icmp6_dst_gc(void);
108 100
109extern void fib6_force_start_gc(struct net *net); 101void fib6_force_start_gc(struct net *net);
110 102
111extern struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev, 103struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
112 const struct in6_addr *addr, 104 const struct in6_addr *addr, bool anycast);
113 bool anycast);
114 105
115/* 106/*
116 * support functions for ND 107 * support functions for ND
117 * 108 *
118 */ 109 */
119extern struct rt6_info * rt6_get_dflt_router(const struct in6_addr *addr, 110struct rt6_info *rt6_get_dflt_router(const struct in6_addr *addr,
120 struct net_device *dev); 111 struct net_device *dev);
121extern struct rt6_info * rt6_add_dflt_router(const struct in6_addr *gwaddr, 112struct rt6_info *rt6_add_dflt_router(const struct in6_addr *gwaddr,
122 struct net_device *dev, 113 struct net_device *dev, unsigned int pref);
123 unsigned int pref); 114
124 115void rt6_purge_dflt_routers(struct net *net);
125extern void rt6_purge_dflt_routers(struct net *net); 116
126 117int rt6_route_rcv(struct net_device *dev, u8 *opt, int len,
127extern int rt6_route_rcv(struct net_device *dev, 118 const struct in6_addr *gwaddr);
128 u8 *opt, int len, 119
129 const struct in6_addr *gwaddr); 120void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu, int oif,
130 121 u32 mark);
131extern void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu, 122void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu);
132 int oif, u32 mark); 123void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark);
133extern void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, 124void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif,
134 __be32 mtu); 125 u32 mark);
135extern void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark); 126void ip6_sk_redirect(struct sk_buff *skb, struct sock *sk);
136extern void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif,
137 u32 mark);
138extern void ip6_sk_redirect(struct sk_buff *skb, struct sock *sk);
139 127
140struct netlink_callback; 128struct netlink_callback;
141 129
@@ -145,10 +133,10 @@ struct rt6_rtnl_dump_arg {
145 struct net *net; 133 struct net *net;
146}; 134};
147 135
148extern int rt6_dump_route(struct rt6_info *rt, void *p_arg); 136int rt6_dump_route(struct rt6_info *rt, void *p_arg);
149extern void rt6_ifdown(struct net *net, struct net_device *dev); 137void rt6_ifdown(struct net *net, struct net_device *dev);
150extern void rt6_mtu_change(struct net_device *dev, unsigned int mtu); 138void rt6_mtu_change(struct net_device *dev, unsigned int mtu);
151extern void rt6_remove_prefsrc(struct inet6_ifaddr *ifp); 139void rt6_remove_prefsrc(struct inet6_ifaddr *ifp);
152 140
153 141
154/* 142/*