mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
38 lines
698 B
Diff
38 lines
698 B
Diff
--- a/net/ipv6/ndisc.c
|
|
+++ b/net/ipv6/ndisc.c
|
|
@@ -650,6 +650,34 @@
|
|
ndisc_send_skb(skb, daddr, saddr);
|
|
}
|
|
|
|
+EXPORT_SYMBOL(ndisc_send_ns);
|
|
+
|
|
+struct net_device *ipv6_dev_find_and_hold(struct net *net, struct in6_addr *addr,
|
|
+ int strict)
|
|
+{
|
|
+ struct inet6_ifaddr *ifp;
|
|
+ struct net_device *dev;
|
|
+
|
|
+ ifp = ipv6_get_ifaddr(net, addr, NULL, strict);
|
|
+ if (!ifp)
|
|
+ return NULL;
|
|
+
|
|
+ if (!ifp->idev) {
|
|
+ in6_ifa_put(ifp);
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ dev = ifp->idev->dev;
|
|
+ if (dev)
|
|
+ dev_hold(dev);
|
|
+
|
|
+ in6_ifa_put(ifp);
|
|
+
|
|
+ return dev;
|
|
+}
|
|
+
|
|
+EXPORT_SYMBOL(ipv6_dev_find_and_hold);
|
|
+
|
|
void ndisc_send_rs(struct net_device *dev, const struct in6_addr *saddr,
|
|
const struct in6_addr *daddr)
|
|
{
|