Lines Matching defs:dev
73 const struct net_device *dev,
76 static bool ndisc_allow_add(const struct net_device *dev,
171 __ndisc_fill_addr_option(skb, type, data, skb->dev->addr_len,
172 ndisc_addr_option_pad(skb->dev->type));
173 ndisc_ops_fill_addr_option(skb->dev, skb, icmp6_type);
181 ndisc_ops_fill_redirect_addr_option(skb->dev, skb, ops_data);
197 static inline int ndisc_is_useropt(const struct net_device *dev,
208 static struct nd_opt_hdr *ndisc_next_useropt(const struct net_device *dev,
216 } while (cur < end && !ndisc_is_useropt(dev, cur));
217 return cur <= end && ndisc_is_useropt(dev, cur) ? cur : NULL;
220 struct ndisc_options *ndisc_parse_options(const struct net_device *dev,
237 if (ndisc_ops_parse_options(dev, nd_opt, ndopts))
267 if (ndisc_is_useropt(dev, nd_opt)) {
287 int ndisc_mc_map(const struct in6_addr *addr, char *buf, struct net_device *dev, int dir)
289 switch (dev->type) {
299 ipv6_ib_mc_map(addr, dev->broadcast, buf);
302 return ipv6_ipgre_mc_map(addr, dev->broadcast, buf);
305 memcpy(buf, dev->broadcast, dev->addr_len);
314 const struct net_device *dev,
317 return ndisc_hashfn(pkey, dev, hash_rnd);
328 struct net_device *dev = neigh->dev;
333 in6_dev = in6_dev_get(dev);
343 if (!dev->header_ops) {
350 ndisc_mc_map(addr, neigh->ha, dev, 1);
351 } else if (dev->flags&(IFF_NOARP|IFF_LOOPBACK)) {
353 memcpy(neigh->ha, dev->dev_addr, dev->addr_len);
354 if (dev->flags&IFF_LOOPBACK)
356 } else if (dev->flags&IFF_POINTOPOINT) {
358 memcpy(neigh->ha, dev->broadcast, dev->addr_len);
360 if (dev->header_ops->cache)
376 struct net_device *dev = n->dev;
379 if (!dev)
383 return ipv6_dev_mc_inc(dev, &maddr);
389 struct net_device *dev = n->dev;
392 if (!dev)
396 ipv6_dev_mc_dec(dev, &maddr);
400 static bool ndisc_allow_add(const struct net_device *dev,
403 struct inet6_dev *idev = __in6_dev_get(dev);
413 static struct sk_buff *ndisc_alloc_skb(struct net_device *dev,
416 int hlen = LL_RESERVED_SPACE(dev);
417 int tlen = dev->needed_tailroom;
425 skb->dev = dev;
434 skb_set_owner_w(skb, dev_net_rcu(dev)->ipv6.ndisc_sk);
450 idev = __in6_dev_get(skb->dev);
473 struct net_device *dev;
484 net = dev_net_rcu(skb->dev);
488 int oif = skb->dev->ifindex;
491 dst = icmp6_dst_alloc(skb->dev, &fl6);
508 dev = dst_dev_rcu(dst);
509 idev = __in6_dev_get(dev);
513 net, sk, skb, NULL, dev,
524 void ndisc_send_na(struct net_device *dev, const struct in6_addr *daddr,
536 ifp = ipv6_get_ifaddr(dev_net(dev), solicited_addr, dev, 1);
544 if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr,
545 inet6_sk(dev_net(dev)->ipv6.ndisc_sk)->srcprefs,
551 if (!dev->addr_len)
554 optlen += ndisc_opt_addr_space(dev,
557 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
574 dev->dev_addr,
580 static void ndisc_send_unsol_na(struct net_device *dev)
585 idev = in6_dev_get(dev);
596 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &ifa->addr,
606 struct sk_buff *ndisc_ns_create(struct net_device *dev, const struct in6_addr *solicit,
609 int inc_opt = dev->addr_len;
620 optlen += ndisc_opt_addr_space(dev,
625 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
639 dev->dev_addr,
653 void ndisc_send_ns(struct net_device *dev, const struct in6_addr *solicit,
661 if (ipv6_get_lladdr(dev, &addr_buf,
667 skb = ndisc_ns_create(dev, solicit, saddr, nonce);
673 void ndisc_send_rs(struct net_device *dev, const struct in6_addr *saddr,
678 int send_sllao = dev->addr_len;
691 struct inet6_ifaddr *ifp = ipv6_get_ifaddr(dev_net(dev), saddr,
692 dev, 1);
704 optlen += ndisc_opt_addr_space(dev, NDISC_ROUTER_SOLICITATION);
706 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
719 dev->dev_addr,
742 struct net_device *dev = neigh->dev;
746 if (skb && ipv6_chk_addr_and_flags(dev_net(dev), &ipv6_hdr(skb)->saddr,
747 dev, false, 1,
756 ndisc_send_ns(dev, target, target, saddr, 0);
761 ndisc_send_ns(dev, target, &mcaddr, saddr, 0);
766 struct net_device *dev)
771 n = pneigh_lookup(&nd_tbl, dev_net(dev), pkey, dev);
778 void ndisc_update(const struct net_device *dev, struct neighbour *neigh,
784 ndisc_ops_update(dev, neigh, flags, icmp6_type, ndopts);
796 struct net_device *dev = skb->dev;
823 if (!ndisc_parse_options(dev, msg->opt, ndoptlen, &ndopts))
827 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_src_lladdr, dev);
848 ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
857 ifp->idev->dev->name, &ifp->addr, np);
881 struct net *net = dev_net(dev);
884 if (netif_is_l3_slave(dev)) {
887 mdev = netdev_master_upper_dev_get_rcu(dev);
895 idev = in6_dev_get(dev);
901 if (ipv6_chk_acast_addr(net, dev, &msg->target) ||
905 (is_router = pndisc_is_router(&msg->target, dev)) >= 0)) {
932 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &msg->target,
946 neigh = __neigh_lookup(&nd_tbl, saddr, dev,
947 !inc || lladdr || !dev->addr_len);
949 ndisc_update(dev, neigh, lladdr, NUD_STALE,
953 if (neigh || !dev->header_ops) {
954 ndisc_send_na(dev, saddr, &msg->target, !!is_router,
969 static int accept_untracked_na(struct net_device *dev, struct in6_addr *saddr)
971 struct inet6_dev *idev = __in6_dev_get(dev);
982 return !!ipv6_chk_prefix(saddr, dev);
997 struct net_device *dev = skb->dev;
998 struct inet6_dev *idev = __in6_dev_get(dev);
1027 if (!ndisc_parse_options(dev, msg->opt, ndoptlen, &ndopts))
1031 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_tgt_lladdr, dev);
1037 ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
1056 ifp->idev->dev->name);
1061 neigh = neigh_lookup(&nd_tbl, &msg->target, dev);
1080 if (accept_untracked_na(dev, saddr)) {
1081 neigh = neigh_create(&nd_tbl, &msg->target, dev);
1088 struct net *net = dev_net(dev);
1098 if (lladdr && !memcmp(lladdr, dev->dev_addr, dev->addr_len) &&
1101 pneigh_lookup(&nd_tbl, net, &msg->target, dev)) {
1106 ndisc_update(dev, neigh, lladdr,
1118 rt6_clean_tohost(dev_net(dev), saddr);
1141 idev = __in6_dev_get(skb->dev);
1159 if (!ndisc_parse_options(skb->dev, rs_msg->opt, ndoptlen, &ndopts))
1164 skb->dev);
1169 neigh = __neigh_lookup(&nd_tbl, saddr, skb->dev, 1);
1171 ndisc_update(skb->dev, neigh, lladdr, NUD_STALE,
1189 struct net *net = dev_net(ra->dev);
1208 ndmsg->nduseropt_ifindex = ra->dev->ifindex;
1251 net_dbg_ratelimited("RA: %s, dev: %s\n", __func__, skb->dev->name);
1266 in6_dev = __in6_dev_get(skb->dev);
1268 net_err_ratelimited("RA: can't find inet6 device for %s\n", skb->dev->name);
1272 if (!ndisc_parse_options(skb->dev, opt, optlen, &ndopts))
1276 net_dbg_ratelimited("RA: %s, did not accept ra for dev: %s\n", __func__,
1277 skb->dev->name);
1284 net_dbg_ratelimited("RA: %s, nodetype is NODEFAULT, dev: %s\n", __func__,
1285 skb->dev->name);
1314 net_dbg_ratelimited("RA: %s, defrtr is false for dev: %s\n", __func__,
1315 skb->dev->name);
1323 skb->dev->name);
1330 net = dev_net(in6_dev->dev);
1332 ipv6_chk_addr(net, &ipv6_hdr(skb)->saddr, in6_dev->dev, 0)) {
1333 net_dbg_ratelimited("RA from local address detected on dev: %s: default router ignored\n",
1334 skb->dev->name);
1346 rt = rt6_get_dflt_router(net, &ipv6_hdr(skb)->saddr, skb->dev);
1366 net_dbg_ratelimited("RA: rt: %p lifetime: %d, metric: %d, for dev: %s\n", rt, lifetime,
1367 defrtr_usr_metric, skb->dev->name);
1375 skb->dev, pref, defrtr_usr_metric,
1467 skb->dev, 1);
1472 skb->dev);
1478 ndisc_update(skb->dev, neigh, lladdr, NUD_STALE,
1488 net_dbg_ratelimited("RA: %s, accept_ra is false for dev: %s\n", __func__,
1489 skb->dev->name);
1495 ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr,
1496 in6_dev->dev, 0)) {
1497 net_dbg_ratelimited("RA from local address detected on dev: %s: router info ignored.\n",
1498 skb->dev->name);
1523 rt6_route_rcv(skb->dev, (u8 *)p, (p->nd_opt_len) << 3,
1534 net_dbg_ratelimited("RA: %s, nodetype is NODEFAULT (interior routes), dev: %s\n",
1535 __func__, skb->dev->name);
1545 addrconf_prefix_rcv(skb->dev, (u8 *)p,
1563 if (mtu < IPV6_MIN_MTU || mtu > skb->dev->mtu) {
1568 rt6_mtu_change(skb->dev, mtu);
1576 p = ndisc_next_useropt(skb->dev, p,
1621 if (!ndisc_parse_options(skb->dev, msg->opt, ndoptlen, &ndopts))
1625 ip6_redirect_no_header(skb, dev_net(skb->dev),
1626 skb->dev->ifindex);
1655 struct net_device *dev = skb->dev;
1656 struct net *net = dev_net_rcu(dev);
1671 if (netif_is_l3_master(dev)) {
1672 dev = dev_get_by_index_rcu(net, IPCB(skb)->iif);
1673 if (!dev)
1677 if (ipv6_get_lladdr(dev, &saddr_buf, IFA_F_TENTATIVE)) {
1678 net_dbg_ratelimited("Redirect: no link-local address on %s\n", dev->name);
1689 &saddr_buf, &ipv6_hdr(skb)->saddr, dev->ifindex);
1713 if (dev->addr_len) {
1722 memcpy(ha_buf, neigh->ha, dev->addr_len);
1725 optlen += ndisc_redirect_opt_addr_space(dev, neigh,
1740 buff = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
1789 struct inet6_dev *idev = __in6_dev_get(skb->dev);
1854 struct net_device *dev = netdev_notifier_info_to_dev(ptr);
1856 struct net *net = dev_net(dev);
1862 neigh_changeaddr(&nd_tbl, dev);
1866 idev = in6_dev_get(dev);
1871 ndisc_send_unsol_na(dev);
1875 idev = in6_dev_get(dev);
1886 neigh_changeaddr(&nd_tbl, dev);
1887 if (evict_nocarrier && !netif_carrier_ok(dev))
1888 neigh_carrier_down(&nd_tbl, dev);
1891 neigh_ifdown(&nd_tbl, dev);
1895 ndisc_send_unsol_na(dev);
1928 struct net_device *dev = ctl->extra1;
1934 ndisc_warn_deprecated_sysctl(ctl, "syscall", dev ? dev->name : "default");
1950 if (write && ret == 0 && dev && (idev = in6_dev_get(dev)) != NULL) {