Lines Matching refs:ims
125 static void ims_merge(struct ip_msource *ims,
371 struct ip_msource *ims; in imo_match_source() local
386 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imo_match_source()
388 return (struct in_msource *)ims; in imo_match_source()
402 struct in_msource *ims; in imo_multi_filter() local
423 ims = imo_match_source(imo, gidx, src); in imo_multi_filter()
425 if ((ims == NULL && mode == MCAST_INCLUDE) || in imo_multi_filter()
426 (ims != NULL && ims->imsl_st[0] != mode)) { in imo_multi_filter()
661 struct ip_msource *ims; in inm_clear_recorded() local
665 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { in inm_clear_recorded()
666 if (ims->ims_stp) { in inm_clear_recorded()
667 ims->ims_stp = 0; in inm_clear_recorded()
696 struct ip_msource *ims, *nims; in inm_record_source() local
701 ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); in inm_record_source()
702 if (ims && ims->ims_stp) { in inm_record_source()
705 if (ims == NULL) { in inm_record_source()
713 ims = nims; in inm_record_source()
720 ++ims->ims_stp; in inm_record_source()
742 struct ip_msource *ims; in imf_get_source() local
747 ims = NULL; in imf_get_source()
752 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imf_get_source()
753 lims = (struct in_msource *)ims; in imf_get_source()
812 struct ip_msource *ims; in imf_prune() local
817 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imf_prune()
818 if (ims == NULL) { in imf_prune()
821 lims = (struct in_msource *)ims; in imf_prune()
834 struct ip_msource *ims, *tims; in imf_rollback() local
837 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_rollback()
838 lims = (struct in_msource *)ims; in imf_rollback()
849 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_rollback()
865 struct ip_msource *ims; in imf_leave() local
868 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in imf_leave()
869 lims = (struct in_msource *)ims; in imf_leave()
883 struct ip_msource *ims; in imf_commit() local
886 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in imf_commit()
887 lims = (struct in_msource *)ims; in imf_commit()
901 struct ip_msource *ims, *tims; in imf_reap() local
904 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_reap()
905 lims = (struct in_msource *)ims; in imf_reap()
910 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_reap()
925 struct ip_msource *ims, *tims; in imf_purge() local
928 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_purge()
929 lims = (struct in_msource *)ims; in imf_purge()
932 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_purge()
955 struct ip_msource *ims, *nims; in inm_get_source() local
963 ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); in inm_get_source()
964 if (ims == NULL && !noalloc) { in inm_get_source()
972 ims = nims; in inm_get_source()
977 buf, (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_get_source()
981 *pims = ims; in inm_get_source()
994 ims_get_mode(const struct in_multi *inm, const struct ip_msource *ims, in ims_get_mode() argument
1001 inm->inm_st[t].iss_ex == ims->ims_st[t].ex) { in ims_get_mode()
1003 } else if (ims->ims_st[t].in > 0 && ims->ims_st[t].ex == 0) { in ims_get_mode()
1014 ims_merge(struct ip_msource *ims, const struct in_msource *lims, in ims_merge() argument
1021 ia.s_addr = htonl(ims->ims_haddr); in ims_merge()
1028 ims->ims_st[1].ex -= n; in ims_merge()
1033 ims->ims_st[1].in -= n; in ims_merge()
1040 ims->ims_st[1].ex += n; in ims_merge()
1045 ims->ims_st[1].in += n; in ims_merge()
1066 struct ip_msource *ims, *nims = NULL; in inm_merge() local
1084 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in inm_merge()
1085 lims = (struct in_msource *)ims; in inm_merge()
1105 RB_FOREACH_REVERSE_FROM(ims, ip_msource_tree, nims) { in inm_merge()
1106 lims = (struct in_msource *)ims; in inm_merge()
1207 struct ip_msource *ims; in inm_commit() local
1216 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { in inm_commit()
1217 ims->ims_st[0] = ims->ims_st[1]; in inm_commit()
1228 struct ip_msource *ims, *tims; in inm_reap() local
1232 RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { in inm_reap()
1233 if (ims->ims_st[0].ex > 0 || ims->ims_st[0].in > 0 || in inm_reap()
1234 ims->ims_st[1].ex > 0 || ims->ims_st[1].in > 0 || in inm_reap()
1235 ims->ims_stp != 0) { in inm_reap()
1239 (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_reap()
1240 RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); in inm_reap()
1241 ipms_free(ims); in inm_reap()
1252 struct ip_msource *ims, *tims; in inm_purge() local
1256 RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { in inm_purge()
1258 (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_purge()
1259 RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); in inm_purge()
1260 ipms_free(ims); in inm_purge()
1458 struct in_msource *ims; in inp_block_unblock_source() local
1592 ims = imo_match_source(imo, idx, ssa); in inp_block_unblock_source()
1593 if ((ims != NULL && doblock) || (ims == NULL && !doblock)) { in inp_block_unblock_source()
1606 ims = imf_graft(imf, fmode, ssa); in inp_block_unblock_source()
1607 if (ims == NULL) { in inp_block_unblock_source()
1721 struct ip_msource *ims; in inp_get_source_filters() local
1831 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in inp_get_source_filters()
1832 lims = (struct in_msource *)ims; in inp_get_source_filters()
2417 struct in_msource *ims; in inp_leave_group() local
2568 ims = imo_match_source(imo, idx, ssa); in inp_leave_group()
2569 if (ims == NULL) { in inp_leave_group()
3177 struct ip_msource *ims; variable
3237 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) {
3240 ina.s_addr = htonl(ims->ims_haddr);
3247 if (fmode != ims_get_mode(inm, ims, 1)) {
3252 src.s_addr = htonl(ims->ims_haddr);
3607 ipms_free(struct ip_msource *ims) in ipms_free() argument
3609 zfree(ipms_zone, ims); in ipms_free()