Lines Matching refs: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,
205 ndisc_ops_is_useropt(dev, opt->nd_opt_type);
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,
236 if (ndisc_ops_parse_options(dev, nd_opt, ndopts))
265 if (ndisc_is_useropt(dev, nd_opt)) {
289 int ndisc_mc_map(const struct in6_addr *addr, char *buf, struct net_device *dev, int dir)
291 switch (dev->type) {
301 ipv6_ib_mc_map(addr, dev->broadcast, buf);
304 return ipv6_ipgre_mc_map(addr, dev->broadcast, buf);
307 memcpy(buf, dev->broadcast, dev->addr_len);
316 const struct net_device *dev,
319 return ndisc_hashfn(pkey, dev, hash_rnd);
330 struct net_device *dev = neigh->dev;
335 in6_dev = in6_dev_get(dev);
345 if (!dev->header_ops) {
352 ndisc_mc_map(addr, neigh->ha, dev, 1);
353 } else if (dev->flags&(IFF_NOARP|IFF_LOOPBACK)) {
355 memcpy(neigh->ha, dev->dev_addr, dev->addr_len);
356 if (dev->flags&IFF_LOOPBACK)
358 } else if (dev->flags&IFF_POINTOPOINT) {
360 memcpy(neigh->ha, dev->broadcast, dev->addr_len);
362 if (dev->header_ops->cache)
379 struct net_device *dev = n->dev;
381 if (!dev || !__in6_dev_get(dev))
384 ipv6_dev_mc_inc(dev, &maddr);
392 struct net_device *dev = n->dev;
394 if (!dev || !__in6_dev_get(dev))
397 ipv6_dev_mc_dec(dev, &maddr);
401 static bool ndisc_allow_add(const struct net_device *dev,
404 struct inet6_dev *idev = __in6_dev_get(dev);
414 static struct sk_buff *ndisc_alloc_skb(struct net_device *dev,
417 int hlen = LL_RESERVED_SPACE(dev);
418 int tlen = dev->needed_tailroom;
419 struct sock *sk = dev_net(dev)->ipv6.ndisc_sk;
430 skb->dev = dev;
453 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,
521 void ndisc_send_na(struct net_device *dev, const struct in6_addr *daddr,
533 ifp = ipv6_get_ifaddr(dev_net(dev), solicited_addr, dev, 1);
541 if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr,
542 inet6_sk(dev_net(dev)->ipv6.ndisc_sk)->srcprefs,
548 if (!dev->addr_len)
551 optlen += ndisc_opt_addr_space(dev,
554 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
571 dev->dev_addr,
577 static void ndisc_send_unsol_na(struct net_device *dev)
582 idev = in6_dev_get(dev);
593 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &ifa->addr,
603 struct sk_buff *ndisc_ns_create(struct net_device *dev, const struct in6_addr *solicit,
606 int inc_opt = dev->addr_len;
617 optlen += ndisc_opt_addr_space(dev,
622 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
636 dev->dev_addr,
650 void ndisc_send_ns(struct net_device *dev, const struct in6_addr *solicit,
658 if (ipv6_get_lladdr(dev, &addr_buf,
664 skb = ndisc_ns_create(dev, solicit, saddr, nonce);
670 void ndisc_send_rs(struct net_device *dev, const struct in6_addr *saddr,
675 int send_sllao = dev->addr_len;
688 struct inet6_ifaddr *ifp = ipv6_get_ifaddr(dev_net(dev), saddr,
689 dev, 1);
701 optlen += ndisc_opt_addr_space(dev, NDISC_ROUTER_SOLICITATION);
703 skb = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
716 dev->dev_addr,
739 struct net_device *dev = neigh->dev;
743 if (skb && ipv6_chk_addr_and_flags(dev_net(dev), &ipv6_hdr(skb)->saddr,
744 dev, false, 1,
754 ndisc_send_ns(dev, target, target, saddr, 0);
759 ndisc_send_ns(dev, target, &mcaddr, saddr, 0);
764 struct net_device *dev)
770 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);
850 ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
860 ifp->idev->dev->name,
885 struct net *net = dev_net(dev);
888 if (netif_is_l3_slave(dev)) {
891 mdev = netdev_master_upper_dev_get_rcu(dev);
899 idev = in6_dev_get(dev);
905 if (ipv6_chk_acast_addr(net, dev, &msg->target) ||
908 (is_router = pndisc_is_router(&msg->target, dev)) >= 0)) {
935 ndisc_send_na(dev, &in6addr_linklocal_allnodes, &msg->target,
949 neigh = __neigh_lookup(&nd_tbl, saddr, dev,
950 !inc || lladdr || !dev->addr_len);
952 ndisc_update(dev, neigh, lladdr, NUD_STALE,
956 if (neigh || !dev->header_ops) {
957 ndisc_send_na(dev, saddr, &msg->target, !!is_router,
972 static int accept_untracked_na(struct net_device *dev, struct in6_addr *saddr)
974 struct inet6_dev *idev = __in6_dev_get(dev);
985 return !!ipv6_chk_prefix(saddr, dev);
1000 struct net_device *dev = skb->dev;
1001 struct inet6_dev *idev = __in6_dev_get(dev);
1030 if (!ndisc_parse_options(dev, msg->opt, ndoptlen, &ndopts))
1034 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_tgt_lladdr, dev);
1041 ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
1060 eth_hdr(skb)->h_source, &ifp->addr, ifp->idev->dev->name);
1065 neigh = neigh_lookup(&nd_tbl, &msg->target, dev);
1084 if (accept_untracked_na(dev, saddr)) {
1085 neigh = neigh_create(&nd_tbl, &msg->target, dev);
1092 struct net *net = dev_net(dev);
1102 if (lladdr && !memcmp(lladdr, dev->dev_addr, dev->addr_len) &&
1104 pneigh_lookup(&nd_tbl, net, &msg->target, dev, 0)) {
1109 ndisc_update(dev, neigh, lladdr,
1121 rt6_clean_tohost(dev_net(dev), saddr);
1144 idev = __in6_dev_get(skb->dev);
1162 if (!ndisc_parse_options(skb->dev, rs_msg->opt, ndoptlen, &ndopts))
1167 skb->dev);
1172 neigh = __neigh_lookup(&nd_tbl, saddr, skb->dev, 1);
1174 ndisc_update(skb->dev, neigh, lladdr, NUD_STALE,
1192 struct net *net = dev_net(ra->dev);
1211 ndmsg->nduseropt_ifindex = ra->dev->ifindex;
1254 "RA: %s, dev: %s\n",
1255 __func__, skb->dev->name);
1270 in6_dev = __in6_dev_get(skb->dev);
1273 skb->dev->name);
1277 if (!ndisc_parse_options(skb->dev, opt, optlen, &ndopts))
1282 "RA: %s, did not accept ra for dev: %s\n",
1283 __func__, skb->dev->name);
1291 "RA: %s, nodetype is NODEFAULT, dev: %s\n",
1292 __func__, skb->dev->name);
1322 "RA: %s, defrtr is false for dev: %s\n",
1323 __func__, skb->dev->name);
1331 lifetime, skb->dev->name);
1338 net = dev_net(in6_dev->dev);
1340 ipv6_chk_addr(net, &ipv6_hdr(skb)->saddr, in6_dev->dev, 0)) {
1342 "RA from local address detected on dev: %s: default router ignored\n",
1343 skb->dev->name);
1355 rt = rt6_get_dflt_router(net, &ipv6_hdr(skb)->saddr, skb->dev);
1376 ND_PRINTK(3, info, "RA: rt: %p lifetime: %d, metric: %d, for dev: %s\n",
1377 rt, lifetime, defrtr_usr_metric, skb->dev->name);
1385 skb->dev, pref, defrtr_usr_metric);
1470 skb->dev, 1);
1475 skb->dev);
1482 ndisc_update(skb->dev, neigh, lladdr, NUD_STALE,
1493 "RA: %s, accept_ra is false for dev: %s\n",
1494 __func__, skb->dev->name);
1500 ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr,
1501 in6_dev->dev, 0)) {
1503 "RA from local address detected on dev: %s: router info ignored.\n",
1504 skb->dev->name);
1529 rt6_route_rcv(skb->dev, (u8 *)p, (p->nd_opt_len) << 3,
1541 "RA: %s, nodetype is NODEFAULT (interior routes), dev: %s\n",
1542 __func__, skb->dev->name);
1552 addrconf_prefix_rcv(skb->dev, (u8 *)p,
1570 if (mtu < IPV6_MIN_MTU || mtu > skb->dev->mtu) {
1575 rt6_mtu_change(skb->dev, mtu);
1583 p = ndisc_next_useropt(skb->dev, p,
1630 if (!ndisc_parse_options(skb->dev, msg->opt, ndoptlen, &ndopts))
1634 ip6_redirect_no_header(skb, dev_net(skb->dev),
1635 skb->dev->ifindex);
1664 struct net_device *dev = skb->dev;
1665 struct net *net = dev_net(dev);
1680 if (netif_is_l3_master(skb->dev)) {
1681 dev = __dev_get_by_index(dev_net(skb->dev), IPCB(skb)->iif);
1682 if (!dev)
1686 if (ipv6_get_lladdr(dev, &saddr_buf, IFA_F_TENTATIVE)) {
1688 dev->name);
1700 &saddr_buf, &ipv6_hdr(skb)->saddr, dev->ifindex);
1725 if (dev->addr_len) {
1735 memcpy(ha_buf, neigh->ha, dev->addr_len);
1738 optlen += ndisc_redirect_opt_addr_space(dev, neigh,
1753 buff = ndisc_alloc_skb(dev, sizeof(*msg) + optlen);
1802 struct inet6_dev *idev = __in6_dev_get(skb->dev);
1869 struct net_device *dev = netdev_notifier_info_to_dev(ptr);
1871 struct net *net = dev_net(dev);
1877 neigh_changeaddr(&nd_tbl, dev);
1881 idev = in6_dev_get(dev);
1886 ndisc_send_unsol_na(dev);
1890 idev = in6_dev_get(dev);
1901 neigh_changeaddr(&nd_tbl, dev);
1902 if (evict_nocarrier && !netif_carrier_ok(dev))
1903 neigh_carrier_down(&nd_tbl, dev);
1906 neigh_ifdown(&nd_tbl, dev);
1910 ndisc_send_unsol_na(dev);
1943 struct net_device *dev = ctl->extra1;
1949 ndisc_warn_deprecated_sysctl(ctl, "syscall", dev ? dev->name : "default");
1965 if (write && ret == 0 && dev && (idev = in6_dev_get(dev)) != NULL) {