Lines Matching defs:imo
101 struct ip_moptions *imo, const struct ipsec_level *seclevel,
175 imo != NULL && (ifp = if_get(imo->imo_ifidx)) != NULL) {
263 if (imo != NULL)
264 ip->ip_ttl = imo->imo_ttl;
304 if ((imo == NULL || imo->imo_loop) &&
1405 struct ip_moptions *imo = *imop;
1412 if (imo == NULL) {
1417 imo = malloc(sizeof(*imo), M_IPMOPTS, M_WAITOK|M_ZERO);
1420 *imop = imo;
1421 imo->imo_ifidx = 0;
1422 imo->imo_ttl = IP_DEFAULT_MULTICAST_TTL;
1423 imo->imo_loop = IP_DEFAULT_MULTICAST_LOOP;
1424 imo->imo_num_memberships = 0;
1425 imo->imo_max_memberships = IP_MIN_MEMBERSHIPS;
1426 imo->imo_membership = immp;
1462 imo->imo_ifidx = ifp->if_index;
1477 imo->imo_ifidx = 0;
1495 imo->imo_ifidx = ia->ia_ifp->if_index;
1506 imo->imo_ttl = *(mtod(m, u_char *));
1519 imo->imo_loop = loop;
1559 for (i = 0; i < imo->imo_num_memberships; ++i) {
1560 if (imo->imo_membership[i]->inm_ifidx == ifidx &&
1561 imo->imo_membership[i]->inm_addr.s_addr
1565 if (i < imo->imo_num_memberships) {
1570 if (imo->imo_num_memberships == imo->imo_max_memberships) {
1580 omships = imo->imo_membership;
1581 newmax = ((imo->imo_max_memberships + 1) * 2) - 1;
1588 imo->imo_max_memberships);
1591 imo->imo_max_memberships);
1592 imo->imo_membership = nmships;
1593 imo->imo_max_memberships = newmax;
1606 if ((imo->imo_membership[i] =
1612 ++imo->imo_num_memberships;
1644 for (i = 0; i < imo->imo_num_memberships; ++i) {
1646 imo->imo_membership[i]->inm_ifidx == ifidx) &&
1647 imo->imo_membership[i]->inm_addr.s_addr ==
1651 if (i == imo->imo_num_memberships) {
1659 in_delmulti(imo->imo_membership[i]);
1663 for (++i; i < imo->imo_num_memberships; ++i)
1664 imo->imo_membership[i-1] = imo->imo_membership[i];
1665 --imo->imo_num_memberships;
1676 if (imo->imo_ifidx == 0 &&
1677 imo->imo_ttl == IP_DEFAULT_MULTICAST_TTL &&
1678 imo->imo_loop == IP_DEFAULT_MULTICAST_LOOP &&
1679 imo->imo_num_memberships == 0) {
1680 free(imo->imo_membership , M_IPMOPTS,
1681 imo->imo_max_memberships * sizeof(struct in_multi *));
1693 ip_getmoptions(int optname, struct ip_moptions *imo, struct mbuf *m)
1706 if (imo == NULL || (ifp = if_get(imo->imo_ifidx)) == NULL)
1719 *ttl = (imo == NULL) ? IP_DEFAULT_MULTICAST_TTL
1720 : imo->imo_ttl;
1726 *loop = (imo == NULL) ? IP_DEFAULT_MULTICAST_LOOP
1727 : imo->imo_loop;
1739 ip_freemoptions(struct ip_moptions *imo)
1743 if (imo != NULL) {
1744 for (i = 0; i < imo->imo_num_memberships; ++i)
1745 in_delmulti(imo->imo_membership[i]);
1746 free(imo->imo_membership, M_IPMOPTS,
1747 imo->imo_max_memberships * sizeof(struct in_multi *));
1748 free(imo, M_IPMOPTS, sizeof(*imo));