#include <net/flow.h>
#include <net/ip6_fib.h>
+#include <net/sock.h>
#include <linux/tcp.h>
#include <linux/ip.h>
+#include <linux/ipv6.h>
struct pol_chain {
int type;
extern void ip6_route_init(void);
extern void ip6_route_cleanup(void);
-extern int ipv6_route_ioctl(unsigned int cmd, void *arg);
+extern int ipv6_route_ioctl(unsigned int cmd, void __user *arg);
extern int ip6_route_add(struct in6_rtmsg *rtmsg,
struct nlmsghdr *,
void *rtattr);
+extern int ip6_ins_rt(struct rt6_info *,
+ struct nlmsghdr *,
+ void *rtattr);
extern int ip6_del_rt(struct rt6_info *,
struct nlmsghdr *,
void *rtattr);
extern struct dst_entry *ndisc_dst_alloc(struct net_device *dev,
struct neighbour *neigh,
struct in6_addr *addr,
- int (*output)(struct sk_buff *));
+ int (*output)(struct sk_buff **));
extern int ndisc_dst_gc(int *more);
extern void fib6_force_start_gc(void);
+extern struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
+ const struct in6_addr *addr,
+ int anycast);
+
/*
* support functions for ND
*
extern void rt6_purge_dflt_routers(int lst_resort);
+extern void rt6_reset_dflt_pointer(struct rt6_info *rt);
+
extern void rt6_redirect(struct in6_addr *dest,
struct in6_addr *saddr,
struct neighbour *neigh,
+ u8 *lladdr,
int on_link);
extern void rt6_pmtu_discovery(struct in6_addr *daddr,
/*
* Store a destination cache entry in a socket
- * For UDP/RAW sockets this is done on udp_connect.
*/
-
static inline void ip6_dst_store(struct sock *sk, struct dst_entry *dst,
struct in6_addr *daddr)
{