inm 56 netinet/igmp.c rti_fill(inm) inm 57 netinet/igmp.c struct in_multi *inm; inm 62 netinet/igmp.c if (rti->rti_ifp == inm->inm_ia->ia_ifp) { inm 63 netinet/igmp.c inm->inm_rti = rti; inm 75 netinet/igmp.c rti->rti_ifp = inm->inm_ia->ia_ifp; inm 79 netinet/igmp.c inm->inm_rti = rti; inm 130 netinet/igmp.c struct in_multi *inm; inm 204 netinet/igmp.c IN_FIRST_MULTI(step, inm); inm 205 netinet/igmp.c while (inm != NULL) { inm 206 netinet/igmp.c if (inm->inm_ia->ia_ifp == ifp && inm 207 netinet/igmp.c inm->inm_timer == 0 && inm 208 netinet/igmp.c !IN_LOCAL_GROUP(inm->inm_addr.s_addr)) { inm 209 netinet/igmp.c inm->inm_state = IGMP_DELAYING_MEMBER; inm 210 netinet/igmp.c inm->inm_timer = IGMP_RANDOM_DELAY( inm 214 netinet/igmp.c IN_NEXT_MULTI(step, inm); inm 235 netinet/igmp.c IN_FIRST_MULTI(step, inm); inm 236 netinet/igmp.c while (inm != NULL) { inm 237 netinet/igmp.c if (inm->inm_ia->ia_ifp == ifp && inm 238 netinet/igmp.c !IN_LOCAL_GROUP(inm->inm_addr.s_addr) && inm 240 netinet/igmp.c ip->ip_dst.s_addr == inm->inm_addr.s_addr)) { inm 241 netinet/igmp.c switch (inm->inm_state) { inm 243 netinet/igmp.c if (inm->inm_timer <= timer) inm 249 netinet/igmp.c inm->inm_state = inm 251 netinet/igmp.c inm->inm_timer = inm 256 netinet/igmp.c inm->inm_state = inm 261 netinet/igmp.c IN_NEXT_MULTI(step, inm); inm 299 netinet/igmp.c IN_LOOKUP_MULTI(igmp->igmp_group, ifp, inm); inm 300 netinet/igmp.c if (inm != NULL) { inm 301 netinet/igmp.c inm->inm_timer = 0; inm 304 netinet/igmp.c switch (inm->inm_state) { inm 309 netinet/igmp.c inm->inm_state = IGMP_SLEEPING_MEMBER; inm 312 netinet/igmp.c if (inm->inm_rti->rti_type == IGMP_v1_ROUTER) inm 313 netinet/igmp.c inm->inm_state = IGMP_LAZY_MEMBER; inm 315 netinet/igmp.c inm->inm_state = IGMP_SLEEPING_MEMBER; inm 367 netinet/igmp.c IN_LOOKUP_MULTI(igmp->igmp_group, ifp, inm); inm 368 netinet/igmp.c if (inm != NULL) { inm 369 netinet/igmp.c inm->inm_timer = 0; inm 372 netinet/igmp.c switch (inm->inm_state) { inm 376 netinet/igmp.c inm->inm_state = IGMP_LAZY_MEMBER; inm 396 netinet/igmp.c igmp_joingroup(inm) inm 397 netinet/igmp.c struct in_multi *inm; inm 401 netinet/igmp.c inm->inm_state = IGMP_IDLE_MEMBER; inm 403 netinet/igmp.c if (!IN_LOCAL_GROUP(inm->inm_addr.s_addr) && inm 404 netinet/igmp.c (inm->inm_ia->ia_ifp->if_flags & IFF_LOOPBACK) == 0) { inm 405 netinet/igmp.c if ((i = rti_fill(inm)) == -1) { inm 409 netinet/igmp.c igmp_sendpkt(inm, i, 0); inm 410 netinet/igmp.c inm->inm_state = IGMP_DELAYING_MEMBER; inm 411 netinet/igmp.c inm->inm_timer = IGMP_RANDOM_DELAY( inm 415 netinet/igmp.c inm->inm_timer = 0; inm 420 netinet/igmp.c igmp_leavegroup(inm) inm 421 netinet/igmp.c struct in_multi *inm; inm 424 netinet/igmp.c switch (inm->inm_state) { inm 427 netinet/igmp.c if (!IN_LOCAL_GROUP(inm->inm_addr.s_addr) && inm 428 netinet/igmp.c (inm->inm_ia->ia_ifp->if_flags & IFF_LOOPBACK) == 0) inm 429 netinet/igmp.c if (inm->inm_rti->rti_type != IGMP_v1_ROUTER) inm 430 netinet/igmp.c igmp_sendpkt(inm, IGMP_HOST_LEAVE_MESSAGE, inm 443 netinet/igmp.c struct in_multi *inm; inm 456 netinet/igmp.c IN_FIRST_MULTI(step, inm); inm 457 netinet/igmp.c while (inm != NULL) { inm 458 netinet/igmp.c if (inm->inm_timer == 0) { inm 460 netinet/igmp.c } else if (--inm->inm_timer == 0) { inm 461 netinet/igmp.c if (inm->inm_state == IGMP_DELAYING_MEMBER) { inm 462 netinet/igmp.c if (inm->inm_rti->rti_type == IGMP_v1_ROUTER) inm 463 netinet/igmp.c igmp_sendpkt(inm, inm 466 netinet/igmp.c igmp_sendpkt(inm, inm 468 netinet/igmp.c inm->inm_state = IGMP_IDLE_MEMBER; inm 473 netinet/igmp.c IN_NEXT_MULTI(step, inm); inm 495 netinet/igmp.c igmp_sendpkt(inm, type, addr) inm 496 netinet/igmp.c struct in_multi *inm; inm 528 netinet/igmp.c ip->ip_dst = inm->inm_addr; inm 536 netinet/igmp.c igmp->igmp_group = inm->inm_addr; inm 542 netinet/igmp.c imo.imo_multicast_ifp = inm->inm_ia->ia_ifp; inm 946 netinet/in.c struct in_multi *inm; inm 954 netinet/in.c IN_LOOKUP_MULTI(*ap, ifp, inm); inm 955 netinet/in.c if (inm != NULL) { inm 959 netinet/in.c ++inm->inm_refcount; inm 965 netinet/in.c inm = (struct in_multi *)malloc(sizeof(*inm), inm 967 netinet/in.c if (inm == NULL) { inm 971 netinet/in.c inm->inm_addr = *ap; inm 972 netinet/in.c inm->inm_refcount = 1; inm 975 netinet/in.c free(inm, M_IPMADDR); inm 979 netinet/in.c inm->inm_ia = ia; inm 981 netinet/in.c LIST_INSERT_HEAD(&ia->ia_multiaddrs, inm, inm_list); inm 991 netinet/in.c LIST_REMOVE(inm, inm_list); inm 992 netinet/in.c IFAFREE(&inm->inm_ia->ia_ifa); inm 993 netinet/in.c free(inm, M_IPMADDR); inm 1000 netinet/in.c igmp_joingroup(inm); inm 1003 netinet/in.c return (inm); inm 1010 netinet/in.c in_delmulti(inm) inm 1011 netinet/in.c struct in_multi *inm; inm 1017 netinet/in.c if (--inm->inm_refcount == 0) { inm 1022 netinet/in.c igmp_leavegroup(inm); inm 1026 netinet/in.c LIST_REMOVE(inm, inm_list); inm 1027 netinet/in.c ifp = inm->inm_ia->ia_ifp; inm 1028 netinet/in.c IFAFREE(&inm->inm_ia->ia_ifa); inm 1036 netinet/in.c satosin(&ifr.ifr_addr)->sin_addr = inm->inm_addr; inm 1039 netinet/in.c free(inm, M_IPMADDR); inm 160 netinet/in_var.h #define IN_LOOKUP_MULTI(addr, ifp, inm) \ inm 169 netinet/in_var.h (inm) = NULL; \ inm 171 netinet/in_var.h for ((inm) = LIST_FIRST(&ia->ia_multiaddrs); \ inm 172 netinet/in_var.h (inm) != LIST_END(&ia->ia_multiaddrs) && \ inm 173 netinet/in_var.h (inm)->inm_addr.s_addr != (addr).s_addr; \ inm 174 netinet/in_var.h (inm) = LIST_NEXT(inm, inm_list)) \ inm 185 netinet/in_var.h #define IN_NEXT_MULTI(step, inm) \ inm 189 netinet/in_var.h if (((inm) = (step).i_inm) != NULL) \ inm 190 netinet/in_var.h (step).i_inm = LIST_NEXT((inm), inm_list); \ inm 193 netinet/in_var.h (inm) = LIST_FIRST(&(step).i_ia->ia_multiaddrs); \ inm 195 netinet/in_var.h if ((inm) != NULL) { \ inm 196 netinet/in_var.h (step).i_inm = LIST_NEXT((inm), inm_list); \ inm 202 netinet/in_var.h #define IN_FIRST_MULTI(step, inm) \ inm 208 netinet/in_var.h IN_NEXT_MULTI((step), (inm)); \ inm 1860 netinet/ip_carp.c struct in_multi *inm; inm 1867 netinet/ip_carp.c IN_LOOKUP_MULTI(mc_addr, &sc->sc_if, inm); inm 1868 netinet/ip_carp.c if (inm == NULL) { inm 422 netinet/ip_input.c struct in_multi *inm; inm 466 netinet/ip_input.c IN_LOOKUP_MULTI(ip->ip_dst, m->m_pkthdr.rcvif, inm); inm 467 netinet/ip_input.c if (inm == NULL) { inm 417 netinet/ip_output.c struct in_multi *inm; inm 475 netinet/ip_output.c IN_LOOKUP_MULTI(ip->ip_dst, ifp, inm); inm 476 netinet/ip_output.c if (inm != NULL &&