Lines Matching refs:igi

430 	struct igmp_ifsoftc	*igi;  in sysctl_igmp_ifinfo()  local
459 LIST_FOREACH(igi, &V_igi_head, igi_link) { in sysctl_igmp_ifinfo()
460 if (ifp == igi->igi_ifp) { in sysctl_igmp_ifinfo()
463 info.igi_version = igi->igi_version; in sysctl_igmp_ifinfo()
464 info.igi_v1_timer = igi->igi_v1_timer; in sysctl_igmp_ifinfo()
465 info.igi_v2_timer = igi->igi_v2_timer; in sysctl_igmp_ifinfo()
466 info.igi_v3_timer = igi->igi_v3_timer; in sysctl_igmp_ifinfo()
467 info.igi_flags = igi->igi_flags; in sysctl_igmp_ifinfo()
468 info.igi_rv = igi->igi_rv; in sysctl_igmp_ifinfo()
469 info.igi_qi = igi->igi_qi; in sysctl_igmp_ifinfo()
470 info.igi_qri = igi->igi_qri; in sysctl_igmp_ifinfo()
471 info.igi_uri = igi->igi_uri; in sysctl_igmp_ifinfo()
553 struct igmp_ifsoftc *igi; in igmp_domifattach() local
560 igi = igi_alloc_locked(ifp); in igmp_domifattach()
562 igi->igi_flags |= IGIF_SILENT; in igmp_domifattach()
566 return (igi); in igmp_domifattach()
575 struct igmp_ifsoftc *igi; in igi_alloc_locked() local
579 igi = malloc(sizeof(struct igmp_ifsoftc), M_IGMP, M_NOWAIT|M_ZERO); in igi_alloc_locked()
580 if (igi == NULL) in igi_alloc_locked()
583 igi->igi_ifp = ifp; in igi_alloc_locked()
584 igi->igi_version = V_igmp_default_version; in igi_alloc_locked()
585 igi->igi_flags = 0; in igi_alloc_locked()
586 igi->igi_rv = IGMP_RV_INIT; in igi_alloc_locked()
587 igi->igi_qi = IGMP_QI_INIT; in igi_alloc_locked()
588 igi->igi_qri = IGMP_QRI_INIT; in igi_alloc_locked()
589 igi->igi_uri = IGMP_URI_INIT; in igi_alloc_locked()
590 mbufq_init(&igi->igi_gq, IGMP_MAX_RESPONSE_PACKETS); in igi_alloc_locked()
592 LIST_INSERT_HEAD(&V_igi_head, igi, igi_link); in igi_alloc_locked()
598 return (igi); in igi_alloc_locked()
613 struct igmp_ifsoftc *igi; in igmp_ifdetach() local
623 igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; in igmp_ifdetach()
624 if (igi->igi_version == IGMP_VERSION_3) { in igmp_ifdetach()
665 struct igmp_ifsoftc *igi, *tigi; in igi_delete_locked() local
672 LIST_FOREACH_SAFE(igi, &V_igi_head, igi_link, tigi) { in igi_delete_locked()
673 if (igi->igi_ifp == ifp) { in igi_delete_locked()
677 mbufq_drain(&igi->igi_gq); in igi_delete_locked()
679 LIST_REMOVE(igi, igi_link); in igi_delete_locked()
680 free(igi, M_IGMP); in igi_delete_locked()
697 struct igmp_ifsoftc *igi; in igmp_input_v1_query() local
716 igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; in igmp_input_v1_query()
717 KASSERT(igi != NULL, ("%s: no igmp_ifsoftc for ifp %p", __func__, ifp)); in igmp_input_v1_query()
719 if (igi->igi_flags & IGIF_LOOPBACK) { in igmp_input_v1_query()
728 igmp_set_version(igi, IGMP_VERSION_1); in igmp_input_v1_query()
782 struct igmp_ifsoftc *igi; in igmp_input_v2_query() local
810 igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; in igmp_input_v2_query()
811 KASSERT(igi != NULL, ("%s: no igmp_ifsoftc for ifp %p", __func__, ifp)); in igmp_input_v2_query()
813 if (igi->igi_flags & IGIF_LOOPBACK) { in igmp_input_v2_query()
822 if (igi->igi_version == IGMP_VERSION_1) in igmp_input_v2_query()
825 igmp_set_version(igi, IGMP_VERSION_2); in igmp_input_v2_query()
933 struct igmp_ifsoftc *igi; in igmp_input_v3_query() local
1005 igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; in igmp_input_v3_query()
1006 KASSERT(igi != NULL, ("%s: no igmp_ifsoftc for ifp %p", __func__, ifp)); in igmp_input_v3_query()
1008 if (igi->igi_flags & IGIF_LOOPBACK) { in igmp_input_v3_query()
1020 if (igi->igi_version != IGMP_VERSION_3) { in igmp_input_v3_query()
1022 igi->igi_version, ifp, ifp->if_xname); in igmp_input_v3_query()
1026 igmp_set_version(igi, IGMP_VERSION_3); in igmp_input_v3_query()
1027 igi->igi_rv = qrv; in igmp_input_v3_query()
1028 igi->igi_qi = qqi; in igmp_input_v3_query()
1029 igi->igi_qri = maxresp; in igmp_input_v3_query()
1045 if (igi->igi_v3_timer == 0 || igi->igi_v3_timer >= timer) { in igmp_input_v3_query()
1046 igi->igi_v3_timer = IGMP_RANDOM_DELAY(timer); in igmp_input_v3_query()
1077 if (igi->igi_v3_timer == 0 || igi->igi_v3_timer >= timer) in igmp_input_v3_query()
1078 igmp_input_v3_group_query(inm, igi, timer, igmpv3); in igmp_input_v3_query()
1094 igmp_input_v3_group_query(struct in_multi *inm, struct igmp_ifsoftc *igi, in igmp_input_v3_group_query() argument
1240 struct igmp_ifsoftc *igi; in igmp_input_v1_report() local
1242 igi = inm->inm_igi; in igmp_input_v1_report()
1243 if (igi == NULL) { in igmp_input_v1_report()
1244 KASSERT(igi != NULL, in igmp_input_v1_report()
1256 if (igi->igi_version == IGMP_VERSION_3) { in igmp_input_v1_report()
1283 if (igi->igi_version == IGMP_VERSION_1) in igmp_input_v1_report()
1285 else if (igi->igi_version == IGMP_VERSION_2) in igmp_input_v1_report()
1365 struct igmp_ifsoftc *igi; in igmp_input_v2_report() local
1367 igi = inm->inm_igi; in igmp_input_v2_report()
1368 KASSERT(igi != NULL, ("%s: no igi for ifp %p", __func__, ifp)); in igmp_input_v2_report()
1377 if (igi->igi_version == IGMP_VERSION_3) { in igmp_input_v2_report()
1634 struct igmp_ifsoftc *igi; in igmp_fasttimo_vnet() local
1664 LIST_FOREACH(igi, &V_igi_head, igi_link) { in igmp_fasttimo_vnet()
1665 if (igi->igi_v3_timer == 0) { in igmp_fasttimo_vnet()
1667 } else if (--igi->igi_v3_timer == 0) { in igmp_fasttimo_vnet()
1668 igmp_v3_dispatch_general_query(igi); in igmp_fasttimo_vnet()
1688 LIST_FOREACH(igi, &V_igi_head, igi_link) { in igmp_fasttimo_vnet()
1689 ifp = igi->igi_ifp; in igmp_fasttimo_vnet()
1691 if (igi->igi_version == IGMP_VERSION_3) { in igmp_fasttimo_vnet()
1692 loop = (igi->igi_flags & IGIF_LOOPBACK) ? 1 : 0; in igmp_fasttimo_vnet()
1693 uri_fasthz = IGMP_RANDOM_DELAY(igi->igi_uri * in igmp_fasttimo_vnet()
1706 switch (igi->igi_version) { in igmp_fasttimo_vnet()
1710 igi->igi_version); in igmp_fasttimo_vnet()
1724 if (igi->igi_version == IGMP_VERSION_3) { in igmp_fasttimo_vnet()
1939 igmp_set_version(struct igmp_ifsoftc *igi, const int version) in igmp_set_version() argument
1946 version, igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_set_version()
1953 old_version_timer = igi->igi_rv * igi->igi_qi + igi->igi_qri; in igmp_set_version()
1957 igi->igi_v1_timer = old_version_timer; in igmp_set_version()
1958 igi->igi_v2_timer = 0; in igmp_set_version()
1960 igi->igi_v1_timer = 0; in igmp_set_version()
1961 igi->igi_v2_timer = old_version_timer; in igmp_set_version()
1965 if (igi->igi_v1_timer == 0 && igi->igi_v2_timer > 0) { in igmp_set_version()
1966 if (igi->igi_version != IGMP_VERSION_2) { in igmp_set_version()
1967 igi->igi_version = IGMP_VERSION_2; in igmp_set_version()
1968 igmp_v3_cancel_link_timers(igi); in igmp_set_version()
1970 } else if (igi->igi_v1_timer > 0) { in igmp_set_version()
1971 if (igi->igi_version != IGMP_VERSION_1) { in igmp_set_version()
1972 igi->igi_version = IGMP_VERSION_1; in igmp_set_version()
1973 igmp_v3_cancel_link_timers(igi); in igmp_set_version()
1988 igmp_v3_cancel_link_timers(struct igmp_ifsoftc *igi) in igmp_v3_cancel_link_timers() argument
1996 igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_v3_cancel_link_timers()
2007 igi->igi_v3_timer = 0; in igmp_v3_cancel_link_timers()
2013 ifp = igi->igi_ifp; in igmp_v3_cancel_link_timers()
2069 igmp_v1v2_process_querier_timers(struct igmp_ifsoftc *igi) in igmp_v1v2_process_querier_timers() argument
2074 if (igi->igi_v1_timer == 0 && igi->igi_v2_timer == 0) { in igmp_v1v2_process_querier_timers()
2080 if (igi->igi_version != IGMP_VERSION_3) { in igmp_v1v2_process_querier_timers()
2083 __func__, igi->igi_version, IGMP_VERSION_3, in igmp_v1v2_process_querier_timers()
2084 igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_v1v2_process_querier_timers()
2085 igi->igi_version = IGMP_VERSION_3; in igmp_v1v2_process_querier_timers()
2087 } else if (igi->igi_v1_timer == 0 && igi->igi_v2_timer > 0) { in igmp_v1v2_process_querier_timers()
2098 __func__, igi->igi_version, IGMP_VERSION_3, in igmp_v1v2_process_querier_timers()
2099 igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_v1v2_process_querier_timers()
2100 igi->igi_v2_timer = 0; in igmp_v1v2_process_querier_timers()
2101 igi->igi_version = IGMP_VERSION_3; in igmp_v1v2_process_querier_timers()
2103 --igi->igi_v2_timer; in igmp_v1v2_process_querier_timers()
2104 if (igi->igi_version != IGMP_VERSION_2) { in igmp_v1v2_process_querier_timers()
2107 __func__, igi->igi_version, IGMP_VERSION_2, in igmp_v1v2_process_querier_timers()
2108 igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_v1v2_process_querier_timers()
2109 igi->igi_version = IGMP_VERSION_2; in igmp_v1v2_process_querier_timers()
2110 igmp_v3_cancel_link_timers(igi); in igmp_v1v2_process_querier_timers()
2113 } else if (igi->igi_v1_timer > 0) { in igmp_v1v2_process_querier_timers()
2125 __func__, igi->igi_version, IGMP_VERSION_3, in igmp_v1v2_process_querier_timers()
2126 igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_v1v2_process_querier_timers()
2127 igi->igi_v1_timer = 0; in igmp_v1v2_process_querier_timers()
2128 igi->igi_version = IGMP_VERSION_3; in igmp_v1v2_process_querier_timers()
2130 --igi->igi_v1_timer; in igmp_v1v2_process_querier_timers()
2132 if (igi->igi_v2_timer > 0) { in igmp_v1v2_process_querier_timers()
2135 __func__, igi->igi_ifp, igi->igi_ifp->if_xname); in igmp_v1v2_process_querier_timers()
2136 igi->igi_v2_timer = 0; in igmp_v1v2_process_querier_timers()
2165 struct igmp_ifsoftc *igi; in igmp_slowtimo_vnet() local
2169 LIST_FOREACH(igi, &V_igi_head, igi_link) { in igmp_slowtimo_vnet()
2170 igmp_v1v2_process_querier_timers(igi); in igmp_slowtimo_vnet()
2261 struct igmp_ifsoftc *igi; in igmp_change_state() local
2281 igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; in igmp_change_state()
2282 KASSERT(igi != NULL, ("%s: no igmp_ifsoftc for ifp %p", __func__, ifp)); in igmp_change_state()
2294 error = igmp_initial_join(inm, igi); in igmp_change_state()
2298 igmp_final_leave(inm, igi); in igmp_change_state()
2305 error = igmp_handle_state_change(inm, igi); in igmp_change_state()
2323 igmp_initial_join(struct in_multi *inm, struct igmp_ifsoftc *igi) in igmp_initial_join() argument
2340 KASSERT(igi && igi->igi_ifp == ifp, ("%s: inconsistent ifp", __func__)); in igmp_initial_join()
2352 (igi->igi_flags & IGIF_SILENT) || in igmp_initial_join()
2365 if (igi->igi_version == IGMP_VERSION_3 && in igmp_initial_join()
2372 switch (igi->igi_version) { in igmp_initial_join()
2377 (igi->igi_version == IGMP_VERSION_2) ? in igmp_initial_join()
2417 if (igi->igi_flags & IGIF_LOOPBACK) { in igmp_initial_join()
2420 KASSERT(igi->igi_rv > 1, in igmp_initial_join()
2422 igi->igi_rv)); in igmp_initial_join()
2423 inm->inm_scrv = igi->igi_rv; in igmp_initial_join()
2451 igmp_handle_state_change(struct in_multi *inm, struct igmp_ifsoftc *igi) in igmp_handle_state_change() argument
2464 KASSERT(igi && igi->igi_ifp == ifp, ("%s: inconsistent ifp", __func__)); in igmp_handle_state_change()
2467 (igi->igi_flags & IGIF_SILENT) || in igmp_handle_state_change()
2469 (igi->igi_version != IGMP_VERSION_3)) { in igmp_handle_state_change()
2492 inm->inm_scrv = ((igi->igi_flags & IGIF_LOOPBACK) ? 1 : igi->igi_rv); in igmp_handle_state_change()
2509 igmp_final_leave(struct in_multi *inm, struct igmp_ifsoftc *igi) in igmp_final_leave() argument
2534 if (igi->igi_version == IGMP_VERSION_2) { in igmp_final_leave()
2543 } else if (igi->igi_version == IGMP_VERSION_3) { in igmp_final_leave()
2552 if (igi->igi_flags & IGIF_LOOPBACK) { in igmp_final_leave()
2555 inm->inm_scrv = igi->igi_rv; in igmp_final_leave()
3300 igmp_v3_dispatch_general_query(struct igmp_ifsoftc *igi) in igmp_v3_dispatch_general_query() argument
3310 KASSERT(igi->igi_version == IGMP_VERSION_3, in igmp_v3_dispatch_general_query()
3311 ("%s: called when version %d", __func__, igi->igi_version)); in igmp_v3_dispatch_general_query()
3319 if (mbufq_len(&igi->igi_gq) != 0) in igmp_v3_dispatch_general_query()
3322 ifp = igi->igi_ifp; in igmp_v3_dispatch_general_query()
3344 retval = igmp_v3_enqueue_group_record(&igi->igi_gq, in igmp_v3_dispatch_general_query()
3358 loop = (igi->igi_flags & IGIF_LOOPBACK) ? 1 : 0; in igmp_v3_dispatch_general_query()
3359 igmp_dispatch_queue(&igi->igi_gq, IGMP_MAX_RESPONSE_BURST, loop); in igmp_v3_dispatch_general_query()
3364 if (mbufq_first(&igi->igi_gq) != NULL) { in igmp_v3_dispatch_general_query()
3365 igi->igi_v3_timer = 1 + IGMP_RANDOM_DELAY( in igmp_v3_dispatch_general_query()
3598 struct igmp_ifsoftc *igi, *tigi; in DB_SHOW_COMMAND() local
3607 LIST_FOREACH_SAFE(igi, igi_head, igi_link, tigi) { in DB_SHOW_COMMAND()
3608 db_printf("igmp_ifsoftc %p:\n", igi); in DB_SHOW_COMMAND()
3609 db_printf(" ifp %p\n", igi->igi_ifp); in DB_SHOW_COMMAND()
3610 db_printf(" version %u\n", igi->igi_version); in DB_SHOW_COMMAND()
3611 db_printf(" v1_timer %u\n", igi->igi_v1_timer); in DB_SHOW_COMMAND()
3612 db_printf(" v2_timer %u\n", igi->igi_v2_timer); in DB_SHOW_COMMAND()
3613 db_printf(" v3_timer %u\n", igi->igi_v3_timer); in DB_SHOW_COMMAND()
3614 db_printf(" flags %#x\n", igi->igi_flags); in DB_SHOW_COMMAND()
3615 db_printf(" rv %u\n", igi->igi_rv); in DB_SHOW_COMMAND()
3616 db_printf(" qi %u\n", igi->igi_qi); in DB_SHOW_COMMAND()
3617 db_printf(" qri %u\n", igi->igi_qri); in DB_SHOW_COMMAND()
3618 db_printf(" uri %u\n", igi->igi_uri); in DB_SHOW_COMMAND()