@@ -483,6 +483,7 @@ void rt6_get_prefsrc(const struct rt6_info *rt, struct in6_addr *addr)
rcu_read_unlock();
}
+extern const struct nla_policy rtm_ipv6_policy[];
int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh,
struct fib6_config *cfg, gfp_t gfp_flags,
struct netlink_ext_ack *extack);
@@ -4964,7 +4964,7 @@ void rt6_mtu_change(struct net_device *dev, unsigned int mtu)
fib6_clean_all(dev_net(dev), rt6_mtu_change_route, &arg);
}
-static const struct nla_policy rtm_ipv6_policy[RTA_MAX+1] = {
+const struct nla_policy rtm_ipv6_policy[RTA_MAX+1] = {
[RTA_UNSPEC] = { .strict_start_type = RTA_DPORT + 1 },
[RTA_GATEWAY] = { .len = sizeof(struct in6_addr) },
[RTA_PREFSRC] = { .len = sizeof(struct in6_addr) },
... so ip6mr.c can use it too (as it is in IPv4.) Signed-off-by: David Lamparter <equinox@diac24.net> --- 1:1 analog to IPv4, where rtm_ipv4_policy is exposed for pretty exactly the same thing. IPv6 just got away with not using this across file boundaries so far. --- include/net/ip6_fib.h | 1 + net/ipv6/route.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)