Lines Matching defs:inm
105 rti_fill(struct in_multi *inm)
112 if (rti->rti_ifp == inm->inm_ifp) {
113 inm->inm_rti = rti;
123 rti->rti_ifp = inm->inm_ifp;
126 inm->inm_rti = rti;
191 struct in_multi *inm;
271 inm = in_first_multi(&step);
272 while (inm != NULL) {
273 if (inm->inm_ifp == ifp &&
274 inm->inm_timer == 0 &&
275 !IN_LOCAL_GROUP(inm->inm_addr.s_addr)) {
276 inm->inm_state = IGMP_DELAYING_MEMBER;
277 inm->inm_timer = IGMP_RANDOM_DELAY(
281 inm = in_next_multi(&step);
305 inm = in_first_multi(&step);
306 while (inm != NULL) {
307 if (inm->inm_ifp == ifp &&
308 !IN_LOCAL_GROUP(inm->inm_addr.s_addr) &&
310 in_hosteq(ip->ip_dst, inm->inm_addr))) {
311 switch (inm->inm_state) {
313 if (inm->inm_timer <= timer)
319 inm->inm_state =
321 inm->inm_timer =
326 inm->inm_state =
331 inm = in_next_multi(&step);
372 inm = in_lookup_multi(igmp->igmp_group, ifp);
373 if (inm != NULL) {
374 inm->inm_timer = 0;
377 switch (inm->inm_state) {
382 inm->inm_state = IGMP_SLEEPING_MEMBER;
385 if (inm->inm_rti->rti_type == IGMP_v1_ROUTER)
386 inm->inm_state = IGMP_LAZY_MEMBER;
388 inm->inm_state = IGMP_SLEEPING_MEMBER;
447 inm = in_lookup_multi(igmp->igmp_group, ifp);
448 if (inm != NULL) {
449 inm->inm_timer = 0;
452 switch (inm->inm_state) {
456 inm->inm_state = IGMP_LAZY_MEMBER;
488 igmp_joingroup(struct in_multi *inm)
491 inm->inm_state = IGMP_IDLE_MEMBER;
493 if (!IN_LOCAL_GROUP(inm->inm_addr.s_addr) &&
494 (inm->inm_ifp->if_flags & IFF_LOOPBACK) == 0) {
497 report_type = rti_fill(inm);
501 igmp_sendpkt(inm, report_type);
502 inm->inm_state = IGMP_DELAYING_MEMBER;
503 inm->inm_timer = IGMP_RANDOM_DELAY(
507 inm->inm_timer = 0;
513 igmp_leavegroup(struct in_multi *inm)
517 switch (inm->inm_state) {
520 if (!IN_LOCAL_GROUP(inm->inm_addr.s_addr) &&
521 (inm->inm_ifp->if_flags & IFF_LOOPBACK) == 0)
522 if (inm->inm_rti->rti_type != IGMP_v1_ROUTER)
523 igmp_sendpkt(inm, IGMP_HOST_LEAVE_MESSAGE);
535 struct in_multi *inm;
551 inm = in_first_multi(&step);
552 while (inm != NULL) {
553 if (inm->inm_timer == 0) {
555 } else if (--inm->inm_timer == 0) {
556 if (inm->inm_state == IGMP_DELAYING_MEMBER) {
557 if (inm->inm_rti->rti_type == IGMP_v1_ROUTER)
558 igmp_sendpkt(inm,
561 igmp_sendpkt(inm,
563 inm->inm_state = IGMP_IDLE_MEMBER;
568 inm = in_next_multi(&step);
594 igmp_sendpkt(struct in_multi *inm, int type)
619 ip->ip_dst = inm->inm_addr;
626 igmp->igmp_group = inm->inm_addr;
632 imo.imo_multicast_if_index = if_get_index(inm->inm_ifp);