Lines Matching refs:ims

125 static void     ims_merge(struct ip_msource *ims,
403 struct ip_msource *ims; in imo_match_source() local
418 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imo_match_source()
420 return (struct in_msource *)ims; in imo_match_source()
434 struct in_msource *ims; in imo_multi_filter() local
455 ims = imo_match_source(imo, gidx, src); in imo_multi_filter()
457 if ((ims == NULL && mode == MCAST_INCLUDE) || in imo_multi_filter()
458 (ims != NULL && ims->imsl_st[0] != mode)) { in imo_multi_filter()
676 struct ip_msource *ims; in inm_clear_recorded() local
680 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { in inm_clear_recorded()
681 if (ims->ims_stp) { in inm_clear_recorded()
682 ims->ims_stp = 0; in inm_clear_recorded()
711 struct ip_msource *ims, *nims; in inm_record_source() local
716 ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); in inm_record_source()
717 if (ims && ims->ims_stp) { in inm_record_source()
720 if (ims == NULL) { in inm_record_source()
728 ims = nims; in inm_record_source()
735 ++ims->ims_stp; in inm_record_source()
757 struct ip_msource *ims; in imf_get_source() local
762 ims = NULL; in imf_get_source()
767 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imf_get_source()
768 lims = (struct in_msource *)ims; in imf_get_source()
827 struct ip_msource *ims; in imf_prune() local
832 ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find); in imf_prune()
833 if (ims == NULL) { in imf_prune()
836 lims = (struct in_msource *)ims; in imf_prune()
849 struct ip_msource *ims, *tims; in imf_rollback() local
852 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_rollback()
853 lims = (struct in_msource *)ims; in imf_rollback()
864 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_rollback()
880 struct ip_msource *ims; in imf_leave() local
883 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in imf_leave()
884 lims = (struct in_msource *)ims; in imf_leave()
898 struct ip_msource *ims; in imf_commit() local
901 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in imf_commit()
902 lims = (struct in_msource *)ims; in imf_commit()
916 struct ip_msource *ims, *tims; in imf_reap() local
919 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_reap()
920 lims = (struct in_msource *)ims; in imf_reap()
925 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_reap()
940 struct ip_msource *ims, *tims; in imf_purge() local
943 RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { in imf_purge()
944 lims = (struct in_msource *)ims; in imf_purge()
947 RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); in imf_purge()
970 struct ip_msource *ims, *nims; in inm_get_source() local
978 ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); in inm_get_source()
979 if (ims == NULL && !noalloc) { in inm_get_source()
987 ims = nims; in inm_get_source()
992 buf, (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_get_source()
996 *pims = ims; in inm_get_source()
1009 ims_get_mode(const struct in_multi *inm, const struct ip_msource *ims, in ims_get_mode() argument
1016 inm->inm_st[t].iss_ex == ims->ims_st[t].ex) { in ims_get_mode()
1018 } else if (ims->ims_st[t].in > 0 && ims->ims_st[t].ex == 0) { in ims_get_mode()
1029 ims_merge(struct ip_msource *ims, const struct in_msource *lims, in ims_merge() argument
1036 ia.s_addr = htonl(ims->ims_haddr); in ims_merge()
1043 ims->ims_st[1].ex -= n; in ims_merge()
1048 ims->ims_st[1].in -= n; in ims_merge()
1055 ims->ims_st[1].ex += n; in ims_merge()
1060 ims->ims_st[1].in += n; in ims_merge()
1081 struct ip_msource *ims, *nims = NULL; in inm_merge() local
1099 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in inm_merge()
1100 lims = (struct in_msource *)ims; in inm_merge()
1120 RB_FOREACH_REVERSE_FROM(ims, ip_msource_tree, nims) { in inm_merge()
1121 lims = (struct in_msource *)ims; in inm_merge()
1222 struct ip_msource *ims; in inm_commit() local
1231 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { in inm_commit()
1232 ims->ims_st[0] = ims->ims_st[1]; in inm_commit()
1243 struct ip_msource *ims, *tims; in inm_reap() local
1247 RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { in inm_reap()
1248 if (ims->ims_st[0].ex > 0 || ims->ims_st[0].in > 0 || in inm_reap()
1249 ims->ims_st[1].ex > 0 || ims->ims_st[1].in > 0 || in inm_reap()
1250 ims->ims_stp != 0) { in inm_reap()
1254 (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_reap()
1255 RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); in inm_reap()
1256 ipms_free(ims); in inm_reap()
1267 struct ip_msource *ims, *tims; in inm_purge() local
1271 RB_FOREACH_SAFE(ims, ip_msource_tree, &inm->inm_srcs, tims) { in inm_purge()
1273 (uint64_t)VM_KERNEL_ADDRPERM(ims))); in inm_purge()
1274 RB_REMOVE(ip_msource_tree, &inm->inm_srcs, ims); in inm_purge()
1275 ipms_free(ims); in inm_purge()
1473 struct in_msource *ims; in inp_block_unblock_source() local
1607 ims = imo_match_source(imo, idx, ssa); in inp_block_unblock_source()
1608 if ((ims != NULL && doblock) || (ims == NULL && !doblock)) { in inp_block_unblock_source()
1621 ims = imf_graft(imf, fmode, ssa); in inp_block_unblock_source()
1622 if (ims == NULL) { in inp_block_unblock_source()
1736 struct ip_msource *ims; in inp_get_source_filters() local
1846 RB_FOREACH(ims, ip_msource_tree, &imf->imf_sources) { in inp_get_source_filters()
1847 lims = (struct in_msource *)ims; in inp_get_source_filters()
2434 struct in_msource *ims; in inp_leave_group() local
2592 ims = imo_match_source(imo, idx, ssa); in inp_leave_group()
2593 if (ims == NULL) { in inp_leave_group()
3204 struct ip_msource *ims; variable
3264 RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) {
3267 ina.s_addr = htonl(ims->ims_haddr);
3274 if (fmode != ims_get_mode(inm, ims, 1)) {
3279 src.s_addr = htonl(ims->ims_haddr);
3634 ipms_free(struct ip_msource *ims) in ipms_free() argument
3636 zfree(ipms_zone, ims); in ipms_free()