Lines Matching refs:imo

230     struct ip_moptions *imo, struct inpcb *inp)  in ip_output()  argument
342 imo != NULL && imo->imo_multicast_if_index != 0) { in ip_output()
343 ifp = mifp = if_get_byindex(imo->imo_multicast_if_index, &psref); in ip_output()
415 if (imo != NULL) in ip_output()
416 ip->ip_ttl = imo->imo_multicast_ttl; in ip_output()
474 if (inmgroup && (imo == NULL || imo->imo_multicast_loop)) { in ip_output()
794 imo, inp); in ip_output()
1432 struct ip_moptions *imo; in ip_pktinfo_prepare() local
1472 imo = &pktopts->ippo_imobuf; /* local buf in pktopts */ in ip_pktinfo_prepare()
1474 memcpy(imo, pktopts->ippo_imo, sizeof(*imo)); in ip_pktinfo_prepare()
1476 memset(imo, 0, sizeof(*imo)); in ip_pktinfo_prepare()
1477 imo->imo_multicast_ttl = IP_DEFAULT_MULTICAST_TTL; in ip_pktinfo_prepare()
1478 imo->imo_multicast_loop = IP_DEFAULT_MULTICAST_LOOP; in ip_pktinfo_prepare()
1480 imo->imo_multicast_if_index = pktinfo->ipi_ifindex; in ip_pktinfo_prepare()
1481 pktopts->ippo_imo = imo; in ip_pktinfo_prepare()
1812 ip_add_membership(struct ip_moptions *imo, const struct sockopt *sopt) in ip_add_membership() argument
1848 for (i = 0; i < imo->imo_num_memberships; ++i) { in ip_add_membership()
1849 if (imo->imo_membership[i]->inm_ifp == ifp && in ip_add_membership()
1850 in_hosteq(imo->imo_membership[i]->inm_addr, ia)) in ip_add_membership()
1853 if (i < imo->imo_num_memberships) { in ip_add_membership()
1867 imo->imo_membership[i] = in_addmulti(&ia, ifp); in ip_add_membership()
1868 if (imo->imo_membership[i] == NULL) { in ip_add_membership()
1873 ++imo->imo_num_memberships; in ip_add_membership()
1886 ip_drop_membership(struct ip_moptions *imo, const struct sockopt *sopt) in ip_drop_membership() argument
1912 for (i = 0; i < imo->imo_num_memberships; ++i) { in ip_drop_membership()
1914 imo->imo_membership[i]->inm_ifp == ifp) && in ip_drop_membership()
1915 in_hosteq(imo->imo_membership[i]->inm_addr, ia)) in ip_drop_membership()
1918 if (i == imo->imo_num_memberships) { in ip_drop_membership()
1927 in_delmulti(imo->imo_membership[i]); in ip_drop_membership()
1932 for (++i; i < imo->imo_num_memberships; ++i) in ip_drop_membership()
1933 imo->imo_membership[i-1] = imo->imo_membership[i]; in ip_drop_membership()
1934 --imo->imo_num_memberships; in ip_drop_membership()
1948 struct ip_moptions *imo = *pimo; in ip_setmoptions() local
1955 if (!imo) { in ip_setmoptions()
1960 imo = kmem_intr_alloc(sizeof(*imo), KM_NOSLEEP); in ip_setmoptions()
1961 if (imo == NULL) in ip_setmoptions()
1964 imo->imo_multicast_if_index = 0; in ip_setmoptions()
1965 imo->imo_multicast_addr.s_addr = INADDR_ANY; in ip_setmoptions()
1966 imo->imo_multicast_ttl = IP_DEFAULT_MULTICAST_TTL; in ip_setmoptions()
1967 imo->imo_multicast_loop = IP_DEFAULT_MULTICAST_LOOP; in ip_setmoptions()
1968 imo->imo_num_memberships = 0; in ip_setmoptions()
1969 *pimo = imo; in ip_setmoptions()
1988 imo->imo_multicast_if_index = 0; in ip_setmoptions()
2003 imo->imo_multicast_if_index = ifp->if_index; in ip_setmoptions()
2006 imo->imo_multicast_addr = addr; in ip_setmoptions()
2008 imo->imo_multicast_addr.s_addr = INADDR_ANY; in ip_setmoptions()
2016 error = ip_getoptval(sopt, &imo->imo_multicast_ttl, MAXTTL); in ip_setmoptions()
2024 error = ip_getoptval(sopt, &imo->imo_multicast_loop, 1); in ip_setmoptions()
2028 error = ip_add_membership(imo, sopt); in ip_setmoptions()
2032 error = ip_drop_membership(imo, sopt); in ip_setmoptions()
2043 if (imo->imo_multicast_if_index == 0 && in ip_setmoptions()
2044 imo->imo_multicast_ttl == IP_DEFAULT_MULTICAST_TTL && in ip_setmoptions()
2045 imo->imo_multicast_loop == IP_DEFAULT_MULTICAST_LOOP && in ip_setmoptions()
2046 imo->imo_num_memberships == 0) { in ip_setmoptions()
2047 kmem_intr_free(imo, sizeof(*imo)); in ip_setmoptions()
2058 ip_getmoptions(struct ip_moptions *imo, struct sockopt *sopt) in ip_getmoptions() argument
2068 if (imo == NULL || imo->imo_multicast_if_index == 0) in ip_getmoptions()
2070 else if (imo->imo_multicast_addr.s_addr) { in ip_getmoptions()
2072 addr = imo->imo_multicast_addr; in ip_getmoptions()
2078 ifp = if_byindex(imo->imo_multicast_if_index); in ip_getmoptions()
2089 optval = imo ? imo->imo_multicast_ttl in ip_getmoptions()
2096 optval = imo ? imo->imo_multicast_loop in ip_getmoptions()
2113 ip_freemoptions(struct ip_moptions *imo) in ip_freemoptions() argument
2119 if (imo != NULL) { in ip_freemoptions()
2120 for (i = 0; i < imo->imo_num_memberships; ++i) { in ip_freemoptions()
2121 struct in_multi *inm = imo->imo_membership[i]; in ip_freemoptions()
2126 kmem_intr_free(imo, sizeof(*imo)); in ip_freemoptions()