Lines Matching refs:ims

127 static void     ims_merge(struct ip_msource *ims,
405 struct ip_msource *ims; in imo_match_source() local
420 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imo_match_source()
422 return (struct in_msource *)ims; in imo_match_source()
436 struct in_msource *ims; in imo_multi_filter() local
457 ims = imo_match_source(imo, gidx, src); in imo_multi_filter()
459 if ((ims == NULL && mode == MCAST_INCLUDE) || in imo_multi_filter()
460 (ims != NULL && ims->imsl_st[0] != mode)) { in imo_multi_filter()
678 struct ip_msource *ims; in inm_clear_recorded() local
682 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { in inm_clear_recorded()
683 if (ims->ims_stp) { in inm_clear_recorded()
684 ims->ims_stp = 0; in inm_clear_recorded()
713 struct ip_msource *ims, *nims; in inm_record_source() local
718 ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); in inm_record_source()
719 if (ims && ims->ims_stp) { in inm_record_source()
722 if (ims == NULL) { in inm_record_source()
730 ims = nims; in inm_record_source()
737 ++ims->ims_stp; in inm_record_source()
759 struct ip_msource *ims; in imf_get_source() local
764 ims = NULL; in imf_get_source()
769 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imf_get_source()
770 lims = (struct in_msource *)ims; in imf_get_source()
833 struct ip_msource *ims; in imf_prune() local
838 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imf_prune()
839 if (ims == NULL) { in imf_prune()
842 lims = (struct in_msource *)ims; in imf_prune()
855 struct ip_msource *ims, *tims; in imf_rollback() local
858 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_rollback()
859 lims = (struct in_msource *)ims; in imf_rollback()
870 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_rollback()
886 struct ip_msource *ims; in imf_leave() local
889 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in imf_leave()
890 lims = (struct in_msource *)ims; in imf_leave()
904 struct ip_msource *ims; in imf_commit() local
907 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in imf_commit()
908 lims = (struct in_msource *)ims; in imf_commit()
922 struct ip_msource *ims, *tims; in imf_reap() local
925 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_reap()
926 lims = (struct in_msource *)ims; in imf_reap()
931 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_reap()
946 struct ip_msource *ims, *tims; in imf_purge() local
949 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_purge()
950 lims = (struct in_msource *)ims; in imf_purge()
953 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_purge()
976 struct ip_msource *ims, *nims; in inm_get_source() local
984 ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); in inm_get_source()
985 if (ims == NULL && !noalloc) { in inm_get_source()
993 ims = nims; in inm_get_source()
998 buf, (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_get_source()
1002 *pims = ims; in inm_get_source()
1015 ims_get_mode(const struct in_multi *inm, const struct ip_msource *ims, in ims_get_mode() argument
1022 inm->inm_st[t].iss_ex == ims->ims_st[t].ex) { in ims_get_mode()
1024 } else if (ims->ims_st[t].in > 0 && ims->ims_st[t].ex == 0) { in ims_get_mode()
1035 ims_merge(struct ip_msource *ims, const struct in_msource *lims, in ims_merge() argument
1042 ia.s_addr = htonl(ims->ims_haddr); in ims_merge()
1049 ims->ims_st[1].ex -= n; in ims_merge()
1054 ims->ims_st[1].in -= n; in ims_merge()
1061 ims->ims_st[1].ex += n; in ims_merge()
1066 ims->ims_st[1].in += n; in ims_merge()
1087 struct ip_msource *ims, *__single nims = NULL; in inm_merge() local
1105 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in inm_merge()
1106 lims = (struct in_msource *)ims; in inm_merge()
1126 RB_FOREACH_REVERSE_FROM(ims, ip_msource_tree, nims) { in inm_merge()
1127 lims = (struct in_msource *)ims; in inm_merge()
1228 struct ip_msource *ims; in inm_commit() local
1237 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { in inm_commit()
1238 ims->ims_st[0] = ims->ims_st[1]; in inm_commit()
1249 struct ip_msource *ims, *tims; in inm_reap() local
1253 RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { in inm_reap()
1254 if (ims->ims_st[0].ex > 0 || ims->ims_st[0].in > 0 || in inm_reap()
1255 ims->ims_st[1].ex > 0 || ims->ims_st[1].in > 0 || in inm_reap()
1256 ims->ims_stp != 0) { in inm_reap()
1260 (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_reap()
1261 RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); in inm_reap()
1262 ipms_free(ims); in inm_reap()
1273 struct ip_msource *ims, *tims; in inm_purge() local
1277 RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { in inm_purge()
1279 (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_purge()
1280 RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); in inm_purge()
1281 ipms_free(ims); in inm_purge()
1479 struct in_msource *ims; in inp_block_unblock_source() local
1612 ims = imo_match_source(imo, idx, ssa); in inp_block_unblock_source()
1613 if ((ims != NULL && doblock) || (ims == NULL && !doblock)) { in inp_block_unblock_source()
1626 ims = imf_graft(imf, fmode, ssa); in inp_block_unblock_source()
1627 if (ims == NULL) { in inp_block_unblock_source()
1742 struct ip_msource *ims; in inp_get_source_filters() local
1852 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in inp_get_source_filters()
1853 lims = (struct in_msource *)ims; in inp_get_source_filters()
2439 struct in_msource *ims; in inp_leave_group() local
2597 ims = imo_match_source(imo, idx, ssa); in inp_leave_group()
2598 if (ims == NULL) { in inp_leave_group()
3210 struct ip_msource *ims; variable
3261 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) {
3264 ina.s_addr = htonl(ims->ims_haddr);
3271 if (fmode != ims_get_mode(inm, ims, 1)) {
3276 src.s_addr = htonl(ims->ims_haddr);
3635 ipms_free(struct ip_msource *ims) in ipms_free() argument
3637 zfree(ipms_zone, ims); in ipms_free()