Lines Matching refs:in_dev

187 static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
242 struct in_device *in_dev; in inetdev_init() local
247 in_dev = kzalloc(sizeof(*in_dev), GFP_KERNEL); in inetdev_init()
248 if (!in_dev) in inetdev_init()
250 memcpy(&in_dev->cnf, dev_net(dev)->ipv4.devconf_dflt, in inetdev_init()
251 sizeof(in_dev->cnf)); in inetdev_init()
252 in_dev->cnf.sysctl = NULL; in inetdev_init()
253 in_dev->dev = dev; in inetdev_init()
254 in_dev->arp_parms = neigh_parms_alloc(dev, &arp_tbl); in inetdev_init()
255 if (!in_dev->arp_parms) in inetdev_init()
257 if (IPV4_DEVCONF(in_dev->cnf, FORWARDING)) in inetdev_init()
262 refcount_set(&in_dev->refcnt, 1); in inetdev_init()
264 err = devinet_sysctl_register(in_dev); in inetdev_init()
266 in_dev->dead = 1; in inetdev_init()
267 in_dev_put(in_dev); in inetdev_init()
268 in_dev = NULL; in inetdev_init()
271 ip_mc_init_dev(in_dev); in inetdev_init()
273 ip_mc_up(in_dev); in inetdev_init()
276 rcu_assign_pointer(dev->ip_ptr, in_dev); in inetdev_init()
278 return in_dev ?: ERR_PTR(err); in inetdev_init()
280 kfree(in_dev); in inetdev_init()
281 in_dev = NULL; in inetdev_init()
291 static void inetdev_destroy(struct in_device *in_dev) in inetdev_destroy() argument
298 dev = in_dev->dev; in inetdev_destroy()
300 in_dev->dead = 1; in inetdev_destroy()
302 ip_mc_destroy_dev(in_dev); in inetdev_destroy()
304 while ((ifa = in_dev->ifa_list) != NULL) { in inetdev_destroy()
305 inet_del_ifa(in_dev, &in_dev->ifa_list, 0); in inetdev_destroy()
311 devinet_sysctl_unregister(in_dev); in inetdev_destroy()
312 neigh_parms_release(&arp_tbl, in_dev->arp_parms); in inetdev_destroy()
315 call_rcu(&in_dev->rcu_head, in_dev_rcu_put); in inetdev_destroy()
318 int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b) in inet_addr_onlink() argument
321 for_primary_ifa(in_dev) { in inet_addr_onlink()
328 } endfor_ifa(in_dev); in inet_addr_onlink()
333 static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap, in __inet_del_ifa() argument
338 struct in_ifaddr *last_prim = in_dev->ifa_list; in __inet_del_ifa()
340 int do_promote = IN_DEV_PROMOTE_SECONDARIES(in_dev); in __inet_del_ifa()
344 if (in_dev->dead) in __inet_del_ifa()
437 static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap, in inet_del_ifa() argument
440 __inet_del_ifa(in_dev, ifap, destroy, NULL, 0); in inet_del_ifa()
450 struct in_device *in_dev = ifa->ifa_dev; in __inet_insert_ifa() local
463 last_primary = &in_dev->ifa_list; in __inet_insert_ifa()
465 for (ifap = &in_dev->ifa_list; (ifa1 = *ifap) != NULL; in __inet_insert_ifa()
510 inet_hash_insert(dev_net(in_dev->dev), ifa); in __inet_insert_ifa()
531 struct in_device *in_dev = __in_dev_get_rtnl(dev); in inet_set_ifa() local
535 if (!in_dev) { in inet_set_ifa()
539 ipv4_devconf_setall(in_dev); in inet_set_ifa()
540 neigh_parms_data_state_setall(in_dev->arp_parms); in inet_set_ifa()
541 if (ifa->ifa_dev != in_dev) { in inet_set_ifa()
543 in_dev_hold(in_dev); in inet_set_ifa()
544 ifa->ifa_dev = in_dev; in inet_set_ifa()
557 struct in_device *in_dev = NULL; in inetdev_by_index() local
562 in_dev = rcu_dereference_rtnl(dev->ip_ptr); in inetdev_by_index()
564 return in_dev; in inetdev_by_index()
570 struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix, in inet_ifa_byprefix() argument
575 for_primary_ifa(in_dev) { in inet_ifa_byprefix()
578 } endfor_ifa(in_dev); in inet_ifa_byprefix()
607 struct in_device *in_dev; in inet_rtm_deladdr() local
620 in_dev = inetdev_by_index(net, ifm->ifa_index); in inet_rtm_deladdr()
621 if (!in_dev) { in inet_rtm_deladdr()
626 for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL; in inet_rtm_deladdr()
642 __inet_del_ifa(in_dev, ifap, 1, nlh, NETLINK_CB(skb).portid); in inet_rtm_deladdr()
782 struct in_device *in_dev; in rtm_to_ifaddr() local
800 in_dev = __in_dev_get_rtnl(dev); in rtm_to_ifaddr()
802 if (!in_dev) in rtm_to_ifaddr()
813 ipv4_devconf_setall(in_dev); in rtm_to_ifaddr()
814 neigh_parms_data_state_setall(in_dev->arp_parms); in rtm_to_ifaddr()
815 in_dev_hold(in_dev); in rtm_to_ifaddr()
826 ifa->ifa_dev = in_dev; in rtm_to_ifaddr()
864 struct in_device *in_dev = ifa->ifa_dev; in find_matching_ifa() local
870 for (ifap = &in_dev->ifa_list; (ifa1 = *ifap) != NULL; in find_matching_ifa()
965 struct in_device *in_dev; in devinet_ioctl() local
1029 in_dev = __in_dev_get_rtnl(dev); in devinet_ioctl()
1030 if (in_dev) { in devinet_ioctl()
1037 for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL; in devinet_ioctl()
1050 for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL; in devinet_ioctl()
1089 inet_del_ifa(in_dev, ifap, 1); in devinet_ioctl()
1114 inet_del_ifa(in_dev, ifap, 0); in devinet_ioctl()
1139 inet_del_ifa(in_dev, ifap, 0); in devinet_ioctl()
1153 inet_del_ifa(in_dev, ifap, 0); in devinet_ioctl()
1169 inet_del_ifa(in_dev, ifap, 0); in devinet_ioctl()
1198 struct in_device *in_dev = __in_dev_get_rtnl(dev); in inet_gifconf() local
1206 if (!in_dev) in inet_gifconf()
1209 for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) { in inet_gifconf()
1234 static __be32 in_dev_select_addr(const struct in_device *in_dev, in in_dev_select_addr() argument
1237 for_primary_ifa(in_dev) { in in_dev_select_addr()
1241 } endfor_ifa(in_dev); in in_dev_select_addr()
1249 struct in_device *in_dev; in inet_select_addr() local
1254 in_dev = __in_dev_get_rcu(dev); in inet_select_addr()
1255 if (!in_dev) in inet_select_addr()
1258 for_primary_ifa(in_dev) { in inet_select_addr()
1267 } endfor_ifa(in_dev); in inet_select_addr()
1281 (in_dev = __in_dev_get_rcu(dev))) { in inet_select_addr()
1282 addr = in_dev_select_addr(in_dev, scope); in inet_select_addr()
1295 in_dev = __in_dev_get_rcu(dev); in inet_select_addr()
1296 if (!in_dev) in inet_select_addr()
1299 addr = in_dev_select_addr(in_dev, scope); in inet_select_addr()
1309 static __be32 confirm_addr_indev(struct in_device *in_dev, __be32 dst, in confirm_addr_indev() argument
1315 for_ifa(in_dev) { in confirm_addr_indev()
1341 } endfor_ifa(in_dev); in confirm_addr_indev()
1354 __be32 inet_confirm_addr(struct net *net, struct in_device *in_dev, in inet_confirm_addr() argument
1360 if (in_dev) in inet_confirm_addr()
1361 return confirm_addr_indev(in_dev, dst, local, scope); in inet_confirm_addr()
1365 in_dev = __in_dev_get_rcu(dev); in inet_confirm_addr()
1366 if (in_dev) { in inet_confirm_addr()
1367 addr = confirm_addr_indev(in_dev, dst, local, scope); in inet_confirm_addr()
1410 static void inetdev_changename(struct net_device *dev, struct in_device *in_dev) in inetdev_changename() argument
1415 for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) { in inetdev_changename()
1442 struct in_device *in_dev) in inetdev_send_gratuitous_arp() argument
1447 for (ifa = in_dev->ifa_list; ifa; in inetdev_send_gratuitous_arp()
1462 struct in_device *in_dev = __in_dev_get_rtnl(dev); in inetdev_event() local
1466 if (!in_dev) { in inetdev_event()
1468 in_dev = inetdev_init(dev); in inetdev_event()
1469 if (IS_ERR(in_dev)) in inetdev_event()
1470 return notifier_from_errno(PTR_ERR(in_dev)); in inetdev_event()
1472 IN_DEV_CONF_SET(in_dev, NOXFRM, 1); in inetdev_event()
1473 IN_DEV_CONF_SET(in_dev, NOPOLICY, 1); in inetdev_event()
1478 in_dev = inetdev_init(dev); in inetdev_event()
1500 in_dev_hold(in_dev); in inetdev_event()
1501 ifa->ifa_dev = in_dev; in inetdev_event()
1506 ipv4_devconf_setall(in_dev); in inetdev_event()
1507 neigh_parms_data_state_setall(in_dev->arp_parms); in inetdev_event()
1511 ip_mc_up(in_dev); in inetdev_event()
1514 if (!IN_DEV_ARP_NOTIFY(in_dev)) in inetdev_event()
1519 inetdev_send_gratuitous_arp(dev, in_dev); in inetdev_event()
1522 ip_mc_down(in_dev); in inetdev_event()
1525 ip_mc_unmap(in_dev); in inetdev_event()
1528 ip_mc_remap(in_dev); in inetdev_event()
1536 inetdev_destroy(in_dev); in inetdev_event()
1542 inetdev_changename(dev, in_dev); in inetdev_event()
1544 devinet_sysctl_unregister(in_dev); in inetdev_event()
1545 devinet_sysctl_register(in_dev); in inetdev_event()
1655 struct in_device *in_dev; in inet_dump_ifaddr() local
1674 in_dev = __in_dev_get_rcu(dev); in inet_dump_ifaddr()
1675 if (!in_dev) in inet_dump_ifaddr()
1678 for (ifa = in_dev->ifa_list, ip_idx = 0; ifa; in inet_dump_ifaddr()
1735 struct in_device *in_dev = rcu_dereference_rtnl(dev->ip_ptr); in inet_get_link_af_size() local
1737 if (!in_dev) in inet_get_link_af_size()
1746 struct in_device *in_dev = rcu_dereference_rtnl(dev->ip_ptr); in inet_fill_link_af() local
1750 if (!in_dev) in inet_fill_link_af()
1758 ((u32 *) nla_data(nla))[i] = in_dev->cnf.data[i]; in inet_fill_link_af()
1797 struct in_device *in_dev = __in_dev_get_rcu(dev); in inet_set_link_af() local
1801 if (!in_dev) in inet_set_link_af()
1809 ipv4_devconf_set(in_dev, nla_type(a), nla_get_u32(a)); in inet_set_link_af()
1942 struct in_device *in_dev; in inet_netconf_get_devconf() local
1968 in_dev = __in_dev_get_rtnl(dev); in inet_netconf_get_devconf()
1969 if (!in_dev) in inet_netconf_get_devconf()
1971 devconf = &in_dev->cnf; in inet_netconf_get_devconf()
2002 struct in_device *in_dev; in inet_netconf_dump_devconf() local
2017 in_dev = __in_dev_get_rcu(dev); in inet_netconf_dump_devconf()
2018 if (!in_dev) in inet_netconf_dump_devconf()
2022 &in_dev->cnf, in inet_netconf_dump_devconf()
2074 struct in_device *in_dev; in devinet_copy_dflt_conf() local
2076 in_dev = __in_dev_get_rcu(dev); in devinet_copy_dflt_conf()
2077 if (in_dev && !test_bit(i, in_dev->cnf.state)) in devinet_copy_dflt_conf()
2078 in_dev->cnf.data[i] = net->ipv4.devconf_dflt->data[i]; in devinet_copy_dflt_conf()
2101 struct in_device *in_dev; in inet_forward_change() local
2106 in_dev = __in_dev_get_rtnl(dev); in inet_forward_change()
2107 if (in_dev) { in inet_forward_change()
2108 IN_DEV_CONF_SET(in_dev, FORWARDING, on); in inet_forward_change()
2111 dev->ifindex, &in_dev->cnf); in inet_forward_change()