Lines Matching refs:dev
73 const struct net_device *dev,
76 static bool ndisc_allow_add(const struct net_device *dev,
170 __ndisc_fill_addr_option(skb, type, data, skb->dev->addr_len,
171 ndisc_addr_option_pad(skb->dev->type));
172 ndisc_ops_fill_addr_option(skb->dev, skb, icmp6_type);
180 ndisc_ops_fill_redirect_addr_option(skb->dev, skb, ops_data);
196 static inline int ndisc_is_useropt(const struct net_device *dev,
204 ndisc_ops_is_useropt(dev, opt->nd_opt_type);
207 static struct nd_opt_hdr *ndisc_next_useropt(const struct net_device *dev,
215 } while (cur < end && !ndisc_is_useropt(dev, cur));
216 return cur <= end && ndisc_is_useropt(dev, cur) ? cur : NULL;
219 struct ndisc_options *ndisc_parse_options(const struct net_device *dev,
235 if (ndisc_ops_parse_options(dev, nd_opt, ndopts))
264 if (ndisc_is_useropt(dev, nd_opt)) {
288 int ndisc_mc_map(const struct in6_addr *addr, char *buf, struct net_device *dev, int dir)
290 switch (dev->type) {
300 ipv6_ib_mc_map(addr, dev->broadcast, buf);
303 return ipv6_ipgre_mc_map(addr, dev->broadcast, buf);
306 memcpy(buf, dev->broadcast, dev->addr_len);
315 const struct net_device *dev,
318 return ndisc_hashfn(pkey, dev, hash_rnd);
329 struct net_device *dev = neigh->dev;
334 in6_dev = in6_dev_get(dev);
344 if (!dev->header_ops) {
351 ndisc_mc_map(addr, neigh->ha, dev, 1);
352 } else if (dev->flags&(IFF_NOARP|IFF_LOOPBACK)) {
354 memcpy(neigh->ha, dev->dev_addr, dev->addr_len);
355 if (dev->flags&IFF_LOOPBACK)
357 } else if (dev->flags&IFF_POINTOPOINT) {
359 memcpy(neigh->ha, dev->broadcast, dev->addr_len);
361 if (dev->header_ops->cache)
378 struct net_device *dev = n->dev;
380 if (!dev || !__in6_dev_get(dev))
383 ipv6_dev_mc_inc(dev, &maddr);
391 struct net_device *dev = n->dev;
393 if (!dev || !__in6_dev_get(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;
418 struct sock *sk = dev_net(dev)->ipv6.ndisc_sk;
429 skb->dev = dev;
452 idev = __in6_dev_get(skb->dev);
475 struct net *net = dev_net(skb->dev);
486 int oif = skb->dev->ifindex;
489 dst = icmp6_dst_alloc(skb->dev, &fl6);
506 idev = __in6_dev_get(dst->dev);
510 net, sk, skb, NULL, dst->dev,
520 void ndisc_send_na(struct net_device *dev, const struct in6_addr *daddr,
532 ifp = ipv6_get_ifaddr(dev_net(dev), solicited_addr, dev, 1);
540 if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr,
541 inet6_sk(dev_net(dev)->ipv6.ndisc_sk)->srcprefs,
547 if (!dev->addr_len)
550 optlen += ndisc_opt_addr_space(dev,
553 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
570 dev->dev_addr,
576 static void ndisc_send_unsol_na(struct net_device *dev)
581 idev = in6_dev_get(dev);
592 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &ifa->addr,
602 void ndisc_send_ns(struct net_device *dev, const struct in6_addr *solicit,
608 int inc_opt = dev->addr_len;
613 if (ipv6_get_lladdr(dev, &addr_buf,
622 optlen += ndisc_opt_addr_space(dev,
627 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
641 dev->dev_addr,
654 void ndisc_send_rs(struct net_device *dev, const struct in6_addr *saddr,
659 int send_sllao = dev->addr_len;
672 struct inet6_ifaddr *ifp = ipv6_get_ifaddr(dev_net(dev), saddr,
673 dev, 1);
685 optlen += ndisc_opt_addr_space(dev, NDISC_ROUTER_SOLICITATION);
687 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
700 dev->dev_addr,
723 struct net_device *dev = neigh->dev;
727 if (skb && ipv6_chk_addr_and_flags(dev_net(dev), &ipv6_hdr(skb)->saddr,
728 dev, false, 1,
738 ndisc_send_ns(dev, target, target, saddr, 0);
743 ndisc_send_ns(dev, target, &mcaddr, saddr, 0);
748 struct net_device *dev)
754 n = __pneigh_lookup(&nd_tbl, dev_net(dev), pkey, dev);
762 void ndisc_update(const struct net_device *dev, struct neighbour *neigh,
768 ndisc_ops_update(dev, neigh, flags, icmp6_type, ndopts);
780 struct net_device *dev = skb->dev;
808 if (!ndisc_parse_options(dev, msg->opt, ndoptlen, &ndopts)) {
814 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_src_lladdr, dev);
837 ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
847 ifp->idev->dev->name,
872 struct net *net = dev_net(dev);
875 if (netif_is_l3_slave(dev)) {
878 mdev = netdev_master_upper_dev_get_rcu(dev);
886 idev = in6_dev_get(dev);
892 if (ipv6_chk_acast_addr(net, dev, &msg->target) ||
895 (is_router = pndisc_is_router(&msg->target, dev)) >= 0)) {
920 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &msg->target,
934 neigh = __neigh_lookup(&nd_tbl, saddr, dev,
935 !inc || lladdr || !dev->addr_len);
937 ndisc_update(dev, neigh, lladdr, NUD_STALE,
941 if (neigh || !dev->header_ops) {
942 ndisc_send_na(dev, saddr, &msg->target, !!is_router,
964 struct net_device *dev = skb->dev;
965 struct inet6_dev *idev = __in6_dev_get(dev);
993 if (!ndisc_parse_options(dev, msg->opt, ndoptlen, &ndopts)) {
998 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_tgt_lladdr, dev);
1005 ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
1024 eth_hdr(skb)->h_source, &ifp->addr, ifp->idev->dev->name);
1028 neigh = neigh_lookup(&nd_tbl, &msg->target, dev);
1032 struct net *net = dev_net(dev);
1042 if (lladdr && !memcmp(lladdr, dev->dev_addr, dev->addr_len) &&
1044 pneigh_lookup(&nd_tbl, net, &msg->target, dev, 0)) {
1049 ndisc_update(dev, neigh, lladdr,
1061 rt6_clean_tohost(dev_net(dev), saddr);
1082 idev = __in6_dev_get(skb->dev);
1100 if (!ndisc_parse_options(skb->dev, rs_msg->opt, ndoptlen, &ndopts)) {
1107 skb->dev);
1112 neigh = __neigh_lookup(&nd_tbl, saddr, skb->dev, 1);
1114 ndisc_update(skb->dev, neigh, lladdr, NUD_STALE,
1131 struct net *net = dev_net(ra->dev);
1150 ndmsg->nduseropt_ifindex = ra->dev->ifindex;
1191 "RA: %s, dev: %s\n",
1192 __func__, skb->dev->name);
1213 in6_dev = __in6_dev_get(skb->dev);
1216 skb->dev->name);
1220 if (!ndisc_parse_options(skb->dev, opt, optlen, &ndopts)) {
1227 "RA: %s, did not accept ra for dev: %s\n",
1228 __func__, skb->dev->name);
1236 "RA: %s, nodetype is NODEFAULT, dev: %s\n",
1237 __func__, skb->dev->name);
1267 "RA: %s, defrtr is false for dev: %s\n",
1268 __func__, skb->dev->name);
1276 lifetime, skb->dev->name);
1283 net = dev_net(in6_dev->dev);
1285 ipv6_chk_addr(net, &ipv6_hdr(skb)->saddr, in6_dev->dev, 0)) {
1287 "RA from local address detected on dev: %s: default router ignored\n",
1288 skb->dev->name);
1300 rt = rt6_get_dflt_router(net, &ipv6_hdr(skb)->saddr, skb->dev);
1318 ND_PRINTK(3, info, "RA: rt: %p lifetime: %d, for dev: %s\n",
1319 rt, lifetime, skb->dev->name);
1324 skb->dev, pref);
1411 skb->dev, 1);
1416 skb->dev);
1423 ndisc_update(skb->dev, neigh, lladdr, NUD_STALE,
1433 "RA: %s, accept_ra is false for dev: %s\n",
1434 __func__, skb->dev->name);
1440 ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr,
1441 in6_dev->dev, 0)) {
1443 "RA from local address detected on dev: %s: router info ignored.\n",
1444 skb->dev->name);
1469 rt6_route_rcv(skb->dev, (u8 *)p, (p->nd_opt_len) << 3,
1481 "RA: %s, nodetype is NODEFAULT (interior routes), dev: %s\n",
1482 __func__, skb->dev->name);
1492 addrconf_prefix_rcv(skb->dev, (u8 *)p,
1505 if (mtu < IPV6_MIN_MTU || mtu > skb->dev->mtu) {
1510 rt6_mtu_change(skb->dev, mtu);
1518 p = ndisc_next_useropt(skb->dev, p,
1557 if (!ndisc_parse_options(skb->dev, msg->opt, ndoptlen, &ndopts))
1561 ip6_redirect_no_header(skb, dev_net(skb->dev),
1562 skb->dev->ifindex);
1591 struct net_device *dev = skb->dev;
1592 struct net *net = dev_net(dev);
1607 if (netif_is_l3_master(skb->dev)) {
1608 dev = __dev_get_by_index(dev_net(skb->dev), IPCB(skb)->iif);
1609 if (!dev)
1613 if (ipv6_get_lladdr(dev, &saddr_buf, IFA_F_TENTATIVE)) {
1615 dev->name);
1627 &saddr_buf, &ipv6_hdr(skb)->saddr, dev->ifindex);
1652 if (dev->addr_len) {
1662 memcpy(ha_buf, neigh->ha, dev->addr_len);
1665 optlen += ndisc_redirect_opt_addr_space(dev, neigh,
1680 buff = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
1728 struct inet6_dev *idev = __in6_dev_get(skb->dev);
1794 struct net_device *dev = netdev_notifier_info_to_dev(ptr);
1796 struct net *net = dev_net(dev);
1801 neigh_changeaddr(&nd_tbl, dev);
1805 idev = in6_dev_get(dev);
1810 ndisc_send_unsol_na(dev);
1816 neigh_changeaddr(&nd_tbl, dev);
1817 if (!netif_carrier_ok(dev))
1818 neigh_carrier_down(&nd_tbl, dev);
1821 neigh_ifdown(&nd_tbl, dev);
1825 ndisc_send_unsol_na(dev);
1858 struct net_device *dev = ctl->extra1;
1864 ndisc_warn_deprecated_sysctl(ctl, "syscall", dev ? dev->name : "default");
1880 if (write && ret == 0 && dev && (idev = in6_dev_get(dev)) != NULL) {