Lines Matching refs:in_dev

131 #define IGMP_V1_SEEN(in_dev) \  argument
132 (IPV4_DEVCONF_ALL(dev_net(in_dev->dev), FORCE_IGMP_VERSION) == 1 || \
133 IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 1 || \
134 ((in_dev)->mr_v1_seen && \
135 time_before(jiffies, (in_dev)->mr_v1_seen)))
136 #define IGMP_V2_SEEN(in_dev) \ argument
137 (IPV4_DEVCONF_ALL(dev_net(in_dev->dev), FORCE_IGMP_VERSION) == 2 || \
138 IN_DEV_CONF_GET((in_dev), FORCE_IGMP_VERSION) == 2 || \
139 ((in_dev)->mr_v2_seen && \
140 time_before(jiffies, (in_dev)->mr_v2_seen)))
142 static int unsolicited_report_interval(struct in_device *in_dev) in unsolicited_report_interval() argument
146 if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev)) in unsolicited_report_interval()
148 in_dev, in unsolicited_report_interval()
152 in_dev, in unsolicited_report_interval()
165 static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im);
166 static void igmpv3_del_delrec(struct in_device *in_dev, struct ip_mc_list *im);
167 static void igmpv3_clear_delrec(struct in_device *in_dev);
172 static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
183 #define for_each_pmc_rcu(in_dev, pmc) \ argument
184 for (pmc = rcu_dereference(in_dev->mc_list); \
188 #define for_each_pmc_rtnl(in_dev, pmc) \ argument
189 for (pmc = rtnl_dereference(in_dev->mc_list); \
220 static void igmp_gq_start_timer(struct in_device *in_dev) in igmp_gq_start_timer() argument
222 int tv = prandom_u32() % in_dev->mr_maxdelay; in igmp_gq_start_timer()
225 if (in_dev->mr_gq_running && in igmp_gq_start_timer()
226 time_after_eq(exp, (in_dev->mr_gq_timer).expires)) in igmp_gq_start_timer()
229 in_dev->mr_gq_running = 1; in igmp_gq_start_timer()
230 if (!mod_timer(&in_dev->mr_gq_timer, exp)) in igmp_gq_start_timer()
231 in_dev_hold(in_dev); in igmp_gq_start_timer()
234 static void igmp_ifc_start_timer(struct in_device *in_dev, int delay) in igmp_ifc_start_timer() argument
238 if (!mod_timer(&in_dev->mr_ifc_timer, jiffies+tv+2)) in igmp_ifc_start_timer()
239 in_dev_hold(in_dev); in igmp_ifc_start_timer()
329 struct in_device *in_dev = __in_dev_get_rcu(dev); in igmpv3_get_srcaddr() local
331 if (!in_dev) in igmpv3_get_srcaddr()
334 for_ifa(in_dev) { in igmpv3_get_srcaddr()
337 } endfor_ifa(in_dev); in igmpv3_get_srcaddr()
580 static int igmpv3_send_report(struct in_device *in_dev, struct ip_mc_list *pmc) in igmpv3_send_report() argument
583 struct net *net = dev_net(in_dev->dev); in igmpv3_send_report()
588 for_each_pmc_rcu(in_dev, pmc) { in igmpv3_send_report()
638 static void igmpv3_send_cr(struct in_device *in_dev) in igmpv3_send_cr() argument
645 spin_lock_bh(&in_dev->mc_tomb_lock); in igmpv3_send_cr()
649 for (pmc = in_dev->mc_tomb; pmc; pmc = pmc_next) { in igmpv3_send_cr()
672 in_dev->mc_tomb = pmc_next; in igmpv3_send_cr()
678 spin_unlock_bh(&in_dev->mc_tomb_lock); in igmpv3_send_cr()
681 for_each_pmc_rcu(in_dev, pmc) { in igmpv3_send_cr()
711 static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc, in igmp_send_report() argument
718 struct net_device *dev = in_dev->dev; in igmp_send_report()
726 return igmpv3_send_report(in_dev, pmc); in igmp_send_report()
785 struct in_device *in_dev = from_timer(in_dev, t, mr_gq_timer); in igmp_gq_timer_expire() local
787 in_dev->mr_gq_running = 0; in igmp_gq_timer_expire()
788 igmpv3_send_report(in_dev, NULL); in igmp_gq_timer_expire()
789 in_dev_put(in_dev); in igmp_gq_timer_expire()
794 struct in_device *in_dev = from_timer(in_dev, t, mr_ifc_timer); in igmp_ifc_timer_expire() local
796 igmpv3_send_cr(in_dev); in igmp_ifc_timer_expire()
797 if (in_dev->mr_ifc_count) { in igmp_ifc_timer_expire()
798 in_dev->mr_ifc_count--; in igmp_ifc_timer_expire()
799 igmp_ifc_start_timer(in_dev, in igmp_ifc_timer_expire()
800 unsolicited_report_interval(in_dev)); in igmp_ifc_timer_expire()
802 in_dev_put(in_dev); in igmp_ifc_timer_expire()
805 static void igmp_ifc_event(struct in_device *in_dev) in igmp_ifc_event() argument
807 struct net *net = dev_net(in_dev->dev); in igmp_ifc_event()
808 if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev)) in igmp_ifc_event()
810 in_dev->mr_ifc_count = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in igmp_ifc_event()
811 igmp_ifc_start_timer(in_dev, 1); in igmp_ifc_event()
818 struct in_device *in_dev = im->interface; in igmp_timer_expire() local
824 igmp_start_timer(im, unsolicited_report_interval(in_dev)); in igmp_timer_expire()
829 if (IGMP_V1_SEEN(in_dev)) in igmp_timer_expire()
830 igmp_send_report(in_dev, im, IGMP_HOST_MEMBERSHIP_REPORT); in igmp_timer_expire()
831 else if (IGMP_V2_SEEN(in_dev)) in igmp_timer_expire()
832 igmp_send_report(in_dev, im, IGMPV2_HOST_MEMBERSHIP_REPORT); in igmp_timer_expire()
834 igmp_send_report(in_dev, im, IGMPV3_HOST_MEMBERSHIP_REPORT); in igmp_timer_expire()
896 static bool igmp_heard_report(struct in_device *in_dev, __be32 group) in igmp_heard_report() argument
899 struct net *net = dev_net(in_dev->dev); in igmp_heard_report()
909 for_each_pmc_rcu(in_dev, im) { in igmp_heard_report()
920 static bool igmp_heard_query(struct in_device *in_dev, struct sk_buff *skb, in igmp_heard_query() argument
929 struct net *net = dev_net(in_dev->dev); in igmp_heard_query()
937 in_dev->mr_v1_seen = jiffies + in igmp_heard_query()
943 in_dev->mr_v2_seen = jiffies + in igmp_heard_query()
947 in_dev->mr_ifc_count = 0; in igmp_heard_query()
948 if (del_timer(&in_dev->mr_ifc_timer)) in igmp_heard_query()
949 __in_dev_put(in_dev); in igmp_heard_query()
951 igmpv3_clear_delrec(in_dev); in igmp_heard_query()
954 } else if (IGMP_V1_SEEN(in_dev)) { in igmp_heard_query()
958 } else if (IGMP_V2_SEEN(in_dev)) { in igmp_heard_query()
983 in_dev->mr_maxdelay = max_delay; in igmp_heard_query()
985 in_dev->mr_qrv = ih3->qrv; in igmp_heard_query()
989 igmp_gq_start_timer(in_dev); in igmp_heard_query()
1007 for_each_pmc_rcu(in_dev, im) { in igmp_heard_query()
1038 struct in_device *in_dev; in igmp_rcv() local
1048 in_dev = __in_dev_get_rcu(dev); in igmp_rcv()
1049 if (!in_dev) in igmp_rcv()
1061 dropped = igmp_heard_query(in_dev, skb, len); in igmp_rcv()
1071 dropped = igmp_heard_report(in_dev, ih->group); in igmp_rcv()
1103 static void ip_mc_filter_add(struct in_device *in_dev, __be32 addr) in ip_mc_filter_add() argument
1106 struct net_device *dev = in_dev->dev; in ip_mc_filter_add()
1123 static void ip_mc_filter_del(struct in_device *in_dev, __be32 addr) in ip_mc_filter_del() argument
1126 struct net_device *dev = in_dev->dev; in ip_mc_filter_del()
1136 static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im) in igmpv3_add_delrec() argument
1139 struct net *net = dev_net(in_dev->dev); in igmpv3_add_delrec()
1153 in_dev_hold(in_dev); in igmpv3_add_delrec()
1155 pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in igmpv3_add_delrec()
1168 spin_lock_bh(&in_dev->mc_tomb_lock); in igmpv3_add_delrec()
1169 pmc->next = in_dev->mc_tomb; in igmpv3_add_delrec()
1170 in_dev->mc_tomb = pmc; in igmpv3_add_delrec()
1171 spin_unlock_bh(&in_dev->mc_tomb_lock); in igmpv3_add_delrec()
1177 static void igmpv3_del_delrec(struct in_device *in_dev, struct ip_mc_list *im) in igmpv3_del_delrec() argument
1181 struct net *net = dev_net(in_dev->dev); in igmpv3_del_delrec()
1184 spin_lock_bh(&in_dev->mc_tomb_lock); in igmpv3_del_delrec()
1186 for (pmc = in_dev->mc_tomb; pmc; pmc = pmc->next) { in igmpv3_del_delrec()
1195 in_dev->mc_tomb = pmc->next; in igmpv3_del_delrec()
1197 spin_unlock_bh(&in_dev->mc_tomb_lock); in igmpv3_del_delrec()
1206 psf->sf_crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in igmpv3_del_delrec()
1208 im->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in igmpv3_del_delrec()
1219 static void igmpv3_clear_delrec(struct in_device *in_dev) in igmpv3_clear_delrec() argument
1223 spin_lock_bh(&in_dev->mc_tomb_lock); in igmpv3_clear_delrec()
1224 pmc = in_dev->mc_tomb; in igmpv3_clear_delrec()
1225 in_dev->mc_tomb = NULL; in igmpv3_clear_delrec()
1226 spin_unlock_bh(&in_dev->mc_tomb_lock); in igmpv3_clear_delrec()
1236 for_each_pmc_rcu(in_dev, pmc) { in igmpv3_clear_delrec()
1254 struct in_device *in_dev = im->interface; in igmp_group_dropped() local
1256 struct net *net = dev_net(in_dev->dev); in igmp_group_dropped()
1262 ip_mc_filter_del(in_dev, im->multiaddr); in igmp_group_dropped()
1274 if (!in_dev->dead) { in igmp_group_dropped()
1275 if (IGMP_V1_SEEN(in_dev)) in igmp_group_dropped()
1277 if (IGMP_V2_SEEN(in_dev)) { in igmp_group_dropped()
1279 igmp_send_report(in_dev, im, IGMP_HOST_LEAVE_MESSAGE); in igmp_group_dropped()
1283 igmpv3_add_delrec(in_dev, im); in igmp_group_dropped()
1285 igmp_ifc_event(in_dev); in igmp_group_dropped()
1292 struct in_device *in_dev = im->interface; in igmp_group_added() local
1294 struct net *net = dev_net(in_dev->dev); in igmp_group_added()
1299 ip_mc_filter_add(in_dev, im->multiaddr); in igmp_group_added()
1308 if (in_dev->dead) in igmp_group_added()
1312 if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev)) { in igmp_group_added()
1325 im->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in igmp_group_added()
1327 igmp_ifc_event(in_dev); in igmp_group_added()
1341 static void ip_mc_hash_add(struct in_device *in_dev, in ip_mc_hash_add() argument
1347 mc_hash = rtnl_dereference(in_dev->mc_hash); in ip_mc_hash_add()
1356 if (in_dev->mc_count < 4) in ip_mc_hash_add()
1364 for_each_pmc_rtnl(in_dev, im) { in ip_mc_hash_add()
1370 rcu_assign_pointer(in_dev->mc_hash, mc_hash); in ip_mc_hash_add()
1373 static void ip_mc_hash_remove(struct in_device *in_dev, in ip_mc_hash_remove() argument
1376 struct ip_mc_list __rcu **mc_hash = rtnl_dereference(in_dev->mc_hash); in ip_mc_hash_remove()
1391 static void __ip_mc_inc_group(struct in_device *in_dev, __be32 addr, in __ip_mc_inc_group() argument
1398 for_each_pmc_rtnl(in_dev, im) { in __ip_mc_inc_group()
1401 ip_mc_add_src(in_dev, &addr, mode, 0, NULL, 0); in __ip_mc_inc_group()
1411 im->interface = in_dev; in __ip_mc_inc_group()
1412 in_dev_hold(in_dev); in __ip_mc_inc_group()
1423 im->next_rcu = in_dev->mc_list; in __ip_mc_inc_group()
1424 in_dev->mc_count++; in __ip_mc_inc_group()
1425 rcu_assign_pointer(in_dev->mc_list, im); in __ip_mc_inc_group()
1427 ip_mc_hash_add(in_dev, im); in __ip_mc_inc_group()
1430 igmpv3_del_delrec(in_dev, im); in __ip_mc_inc_group()
1433 if (!in_dev->dead) in __ip_mc_inc_group()
1434 ip_rt_multicast_event(in_dev); in __ip_mc_inc_group()
1439 void ip_mc_inc_group(struct in_device *in_dev, __be32 addr) in ip_mc_inc_group() argument
1441 __ip_mc_inc_group(in_dev, addr, MCAST_EXCLUDE); in ip_mc_inc_group()
1613 static void ip_mc_rejoin_groups(struct in_device *in_dev) in ip_mc_rejoin_groups() argument
1618 struct net *net = dev_net(in_dev->dev); in ip_mc_rejoin_groups()
1622 for_each_pmc_rtnl(in_dev, im) { in ip_mc_rejoin_groups()
1632 if (IGMP_V1_SEEN(in_dev)) in ip_mc_rejoin_groups()
1634 else if (IGMP_V2_SEEN(in_dev)) in ip_mc_rejoin_groups()
1638 igmp_send_report(in_dev, im, type); in ip_mc_rejoin_groups()
1647 void ip_mc_dec_group(struct in_device *in_dev, __be32 addr) in ip_mc_dec_group() argument
1654 for (ip = &in_dev->mc_list; in ip_mc_dec_group()
1659 ip_mc_hash_remove(in_dev, i); in ip_mc_dec_group()
1661 in_dev->mc_count--; in ip_mc_dec_group()
1665 if (!in_dev->dead) in ip_mc_dec_group()
1666 ip_rt_multicast_event(in_dev); in ip_mc_dec_group()
1679 void ip_mc_unmap(struct in_device *in_dev) in ip_mc_unmap() argument
1685 for_each_pmc_rtnl(in_dev, pmc) in ip_mc_unmap()
1689 void ip_mc_remap(struct in_device *in_dev) in ip_mc_remap() argument
1695 for_each_pmc_rtnl(in_dev, pmc) { in ip_mc_remap()
1697 igmpv3_del_delrec(in_dev, pmc); in ip_mc_remap()
1705 void ip_mc_down(struct in_device *in_dev) in ip_mc_down() argument
1711 for_each_pmc_rtnl(in_dev, pmc) in ip_mc_down()
1715 in_dev->mr_ifc_count = 0; in ip_mc_down()
1716 if (del_timer(&in_dev->mr_ifc_timer)) in ip_mc_down()
1717 __in_dev_put(in_dev); in ip_mc_down()
1718 in_dev->mr_gq_running = 0; in ip_mc_down()
1719 if (del_timer(&in_dev->mr_gq_timer)) in ip_mc_down()
1720 __in_dev_put(in_dev); in ip_mc_down()
1723 ip_mc_dec_group(in_dev, IGMP_ALL_HOSTS); in ip_mc_down()
1726 void ip_mc_init_dev(struct in_device *in_dev) in ip_mc_init_dev() argument
1729 struct net *net = dev_net(in_dev->dev); in ip_mc_init_dev()
1734 timer_setup(&in_dev->mr_gq_timer, igmp_gq_timer_expire, 0); in ip_mc_init_dev()
1735 timer_setup(&in_dev->mr_ifc_timer, igmp_ifc_timer_expire, 0); in ip_mc_init_dev()
1736 in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv; in ip_mc_init_dev()
1739 spin_lock_init(&in_dev->mc_tomb_lock); in ip_mc_init_dev()
1744 void ip_mc_up(struct in_device *in_dev) in ip_mc_up() argument
1748 struct net *net = dev_net(in_dev->dev); in ip_mc_up()
1754 in_dev->mr_qrv = net->ipv4.sysctl_igmp_qrv; in ip_mc_up()
1756 ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS); in ip_mc_up()
1758 for_each_pmc_rtnl(in_dev, pmc) { in ip_mc_up()
1760 igmpv3_del_delrec(in_dev, pmc); in ip_mc_up()
1770 void ip_mc_destroy_dev(struct in_device *in_dev) in ip_mc_destroy_dev() argument
1777 ip_mc_down(in_dev); in ip_mc_destroy_dev()
1779 igmpv3_clear_delrec(in_dev); in ip_mc_destroy_dev()
1782 while ((i = rtnl_dereference(in_dev->mc_list)) != NULL) { in ip_mc_destroy_dev()
1783 in_dev->mc_list = i->next_rcu; in ip_mc_destroy_dev()
1784 in_dev->mc_count--; in ip_mc_destroy_dev()
1847 struct in_device *in_dev = pmc->interface; in ip_mc_del1_src() local
1848 struct net *net = dev_net(in_dev->dev); in ip_mc_del1_src()
1858 !IGMP_V1_SEEN(in_dev) && !IGMP_V2_SEEN(in_dev)) { in ip_mc_del1_src()
1859 psf->sf_crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in ip_mc_del1_src()
1874 static int ip_mc_del_src(struct in_device *in_dev, __be32 *pmca, int sfmode, in ip_mc_del_src() argument
1881 if (!in_dev) in ip_mc_del_src()
1884 for_each_pmc_rcu(in_dev, pmc) { in ip_mc_del_src()
1917 struct net *net = dev_net(in_dev->dev); in ip_mc_del_src()
1923 pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in ip_mc_del_src()
1924 in_dev->mr_ifc_count = pmc->crcount; in ip_mc_del_src()
2046 static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode, in ip_mc_add_src() argument
2053 if (!in_dev) in ip_mc_add_src()
2056 for_each_pmc_rcu(in_dev, pmc) { in ip_mc_add_src()
2091 in_dev = pmc->interface; in ip_mc_add_src()
2102 pmc->crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in ip_mc_add_src()
2103 in_dev->mr_ifc_count = pmc->crcount; in ip_mc_add_src()
2106 igmp_ifc_event(in_dev); in ip_mc_add_src()
2108 igmp_ifc_event(in_dev); in ip_mc_add_src()
2146 struct in_device *in_dev; in __ip_mc_join_group() local
2158 in_dev = ip_mc_find_dev(net, imr); in __ip_mc_join_group()
2160 if (!in_dev) { in __ip_mc_join_group()
2185 __ip_mc_inc_group(in_dev, addr, mode); in __ip_mc_join_group()
2208 struct in_device *in_dev) in ip_mc_leave_src() argument
2215 return ip_mc_del_src(in_dev, &iml->multi.imr_multiaddr.s_addr, in ip_mc_leave_src()
2218 err = ip_mc_del_src(in_dev, &iml->multi.imr_multiaddr.s_addr, in ip_mc_leave_src()
2232 struct in_device *in_dev; in ip_mc_leave_group() local
2240 in_dev = ip_mc_find_dev(net, imr); in ip_mc_leave_group()
2241 if (!imr->imr_ifindex && !imr->imr_address.s_addr && !in_dev) { in ip_mc_leave_group()
2258 (void) ip_mc_leave_src(sk, iml, in_dev); in ip_mc_leave_group()
2262 if (in_dev) in ip_mc_leave_group()
2263 ip_mc_dec_group(in_dev, group); in ip_mc_leave_group()
2282 struct in_device *in_dev = NULL; in ip_mc_source() local
2297 in_dev = ip_mc_find_dev(net, &imr); in ip_mc_source()
2299 if (!in_dev) { in ip_mc_source()
2323 ip_mc_add_src(in_dev, &mreqs->imr_multiaddr, omode, 0, NULL, 0); in ip_mc_source()
2324 ip_mc_del_src(in_dev, &mreqs->imr_multiaddr, pmc->sfmode, 0, in ip_mc_source()
2350 ip_mc_del_src(in_dev, &mreqs->imr_multiaddr, omode, 1, in ip_mc_source()
2403 ip_mc_add_src(in_dev, &mreqs->imr_multiaddr, omode, 1, in ip_mc_source()
2417 struct in_device *in_dev; in ip_mc_msfilter() local
2434 in_dev = ip_mc_find_dev(net, &imr); in ip_mc_msfilter()
2436 if (!in_dev) { in ip_mc_msfilter()
2466 err = ip_mc_add_src(in_dev, &msf->imsf_multiaddr, in ip_mc_msfilter()
2474 (void) ip_mc_add_src(in_dev, &msf->imsf_multiaddr, in ip_mc_msfilter()
2479 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, in ip_mc_msfilter()
2485 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, in ip_mc_msfilter()
2503 struct in_device *in_dev; in ip_mc_msfget() local
2516 in_dev = ip_mc_find_dev(net, &imr); in ip_mc_msfget()
2518 if (!in_dev) { in ip_mc_msfget()
2668 struct in_device *in_dev; in ip_mc_drop_socket() local
2671 in_dev = inetdev_by_index(net, iml->multi.imr_ifindex); in ip_mc_drop_socket()
2672 (void) ip_mc_leave_src(sk, iml, in_dev); in ip_mc_drop_socket()
2673 if (in_dev) in ip_mc_drop_socket()
2674 ip_mc_dec_group(in_dev, iml->multi.imr_multiaddr.s_addr); in ip_mc_drop_socket()
2683 int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u8 proto) in ip_check_mc_rcu() argument
2690 mc_hash = rcu_dereference(in_dev->mc_hash); in ip_check_mc_rcu()
2701 for_each_pmc_rcu(in_dev, im) { in ip_check_mc_rcu()
2730 struct in_device *in_dev; member
2741 state->in_dev = NULL; in igmp_mc_get_first()
2743 struct in_device *in_dev; in igmp_mc_get_first() local
2745 in_dev = __in_dev_get_rcu(state->dev); in igmp_mc_get_first()
2746 if (!in_dev) in igmp_mc_get_first()
2748 im = rcu_dereference(in_dev->mc_list); in igmp_mc_get_first()
2750 state->in_dev = in_dev; in igmp_mc_get_first()
2765 state->in_dev = NULL; in igmp_mc_get_next()
2768 state->in_dev = __in_dev_get_rcu(state->dev); in igmp_mc_get_next()
2769 if (!state->in_dev) in igmp_mc_get_next()
2771 im = rcu_dereference(state->in_dev->mc_list); in igmp_mc_get_next()
2808 state->in_dev = NULL; in igmp_mc_seq_stop()
2825 querier = IGMP_V1_SEEN(state->in_dev) ? "V1" : in igmp_mc_seq_show()
2826 IGMP_V2_SEEN(state->in_dev) ? "V2" : in igmp_mc_seq_show()
2832 if (rcu_access_pointer(state->in_dev->mc_list) == im) { in igmp_mc_seq_show()
2834 state->dev->ifindex, state->dev->name, state->in_dev->mc_count, querier); in igmp_mc_seq_show()
3036 struct in_device *in_dev; in igmp_netdev_event() local
3040 in_dev = __in_dev_get_rtnl(dev); in igmp_netdev_event()
3041 if (in_dev) in igmp_netdev_event()
3042 ip_mc_rejoin_groups(in_dev); in igmp_netdev_event()