const struct in6_addr *addr);
+extern int (*ipv6_dev_get_saddr_hook)(struct net *net,
-+ struct net_device *dev,
++ const struct net_device *dev,
+ const struct in6_addr *daddr,
-+ unsigned int srcprefs,
++ unsigned int prefs,
+ struct in6_addr *saddr);
+
static inline unsigned long addrconf_timeout_fixup(u32 timeout,
+obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_stubs.o
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
-@@ -1246,7 +1246,7 @@ out:
+@@ -1243,7 +1243,7 @@ out:
return ret;
}
const struct in6_addr *daddr, unsigned int prefs,
struct in6_addr *saddr)
{
-@@ -1371,7 +1371,6 @@ try_nextdev:
+@@ -1368,7 +1368,6 @@ try_nextdev:
in6_ifa_put(hiscore->ifa);
return 0;
}
int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
unsigned char banned_flags)
-@@ -4949,6 +4948,9 @@ int __init addrconf_init(void)
+@@ -4968,6 +4967,9 @@ int __init addrconf_init(void)
ipv6_addr_label_rtnl_register();
return 0;
errout:
rtnl_af_unregister(&inet6_ops);
-@@ -4967,6 +4969,9 @@ void addrconf_cleanup(void)
+@@ -4986,6 +4988,9 @@ void addrconf_cleanup(void)
struct net_device *dev;
int i;
+#include <linux/export.h>
+#include <net/ipv6.h>
+
-+int (*ipv6_dev_get_saddr_hook)(struct net *net, struct net_device *dev,
-+ const struct in6_addr *daddr, unsigned int srcprefs,
++int (*ipv6_dev_get_saddr_hook)(struct net *net, const struct net_device *dev,
++ const struct in6_addr *daddr, unsigned int prefs,
+ struct in6_addr *saddr);
+
+EXPORT_SYMBOL(ipv6_dev_get_saddr_hook);
+
-+int ipv6_dev_get_saddr(struct net *net, struct net_device *dst_dev,
++int ipv6_dev_get_saddr(struct net *net, const struct net_device *dst_dev,
+ const struct in6_addr *daddr, unsigned int prefs,
+ struct in6_addr *saddr)
+{