Lines Matching refs:ims

127 static void	im6s_merge(struct ip6_msource *ims,
323 struct ip6_msource *ims;
338 ims = RB_FIND(ip6_msource_tree, &imf->im6f_sources, &find);
340 return ((struct in6_msource *)ims);
354 struct in6_msource *ims;
373 ims = im6o_match_source(imo, gidx, src);
375 if ((ims == NULL && mode == MCAST_INCLUDE) ||
376 (ims != NULL && ims->im6sl_st[0] != mode))
544 struct ip6_msource *ims;
548 RB_FOREACH(ims, ip6_msource_tree, &inm->in6m_srcs) {
549 if (ims->im6s_stp) {
550 ims->im6s_stp = 0;
584 struct ip6_msource *ims, *nims;
589 ims = RB_FIND(ip6_msource_tree, &inm->in6m_srcs, &find);
590 if (ims && ims->im6s_stp)
592 if (ims == NULL) {
602 ims = nims;
609 ++ims->im6s_stp;
631 struct ip6_msource *ims, *nims;
636 ims = NULL;
640 ims = RB_FIND(ip6_msource_tree, &imf->im6f_sources, &find);
641 lims = (struct in6_msource *)ims;
702 struct ip6_msource *ims;
706 ims = RB_FIND(ip6_msource_tree, &imf->im6f_sources, &find);
707 if (ims == NULL)
709 lims = (struct in6_msource *)ims;
720 struct ip6_msource *ims, *tims;
723 RB_FOREACH_SAFE(ims, ip6_msource_tree, &imf->im6f_sources, tims) {
724 lims = (struct in6_msource *)ims;
733 CTR2(KTR_MLD, "%s: free ims %p", __func__, ims);
734 RB_REMOVE(ip6_msource_tree, &imf->im6f_sources, ims);
735 free(ims, M_IN6MFILTER);
748 struct ip6_msource *ims;
751 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
752 lims = (struct in6_msource *)ims;
764 struct ip6_msource *ims;
767 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
768 lims = (struct in6_msource *)ims;
780 struct ip6_msource *ims, *tims;
783 RB_FOREACH_SAFE(ims, ip6_msource_tree, &imf->im6f_sources, tims) {
784 lims = (struct in6_msource *)ims;
787 CTR2(KTR_MLD, "%s: free lims %p", __func__, ims);
788 RB_REMOVE(ip6_msource_tree, &imf->im6f_sources, ims);
789 free(ims, M_IN6MFILTER);
801 struct ip6_msource *ims, *tims;
803 RB_FOREACH_SAFE(ims, ip6_msource_tree, &imf->im6f_sources, tims) {
804 CTR2(KTR_MLD, "%s: free ims %p", __func__, ims);
805 RB_REMOVE(ip6_msource_tree, &imf->im6f_sources, ims);
806 free(ims, M_IN6MFILTER);
830 struct ip6_msource *ims, *nims;
836 ims = RB_FIND(ip6_msource_tree, &inm->in6m_srcs, &find);
837 if (ims == NULL && !noalloc) {
847 ims = nims;
849 ip6_sprintf(ip6tbuf, addr), ims);
852 *pims = ims;
861 im6s_merge(struct ip6_msource *ims, const struct in6_msource *lims,
873 ims->im6s_st[1].ex -= n;
876 ims->im6s_st[1].in -= n;
881 ims->im6s_st[1].ex += n;
884 ims->im6s_st[1].in += n;
896 * which would eliminate the repeated lookup from root of ims nodes,
905 struct ip6_msource *ims, *nims;
921 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
922 lims = (struct in6_msource *)ims;
935 RB_FOREACH_REVERSE_FROM(ims, ip6_msource_tree, nims) {
936 lims = (struct in6_msource *)ims;
1032 struct ip6_msource *ims;
1038 RB_FOREACH(ims, ip6_msource_tree, &inm->in6m_srcs) {
1039 ims->im6s_st[0] = ims->im6s_st[1];
1050 struct ip6_msource *ims, *tims;
1052 RB_FOREACH_SAFE(ims, ip6_msource_tree, &inm->in6m_srcs, tims) {
1053 if (ims->im6s_st[0].ex > 0 || ims->im6s_st[0].in > 0 ||
1054 ims->im6s_st[1].ex > 0 || ims->im6s_st[1].in > 0 ||
1055 ims->im6s_stp != 0)
1057 CTR2(KTR_MLD, "%s: free ims %p", __func__, ims);
1058 RB_REMOVE(ip6_msource_tree, &inm->in6m_srcs, ims);
1059 free(ims, M_IP6MSOURCE);
1070 struct ip6_msource *ims, *tims;
1072 RB_FOREACH_SAFE(ims, ip6_msource_tree, &inm->in6m_srcs, tims) {
1073 CTR2(KTR_MLD, "%s: free ims %p", __func__, ims);
1074 RB_REMOVE(ip6_msource_tree, &inm->in6m_srcs, ims);
1075 free(ims, M_IP6MSOURCE);
1330 struct in6_msource *ims;
1416 ims = im6o_match_source(imo, idx, &ssa->sa);
1417 if ((ims != NULL && doblock) || (ims == NULL && !doblock)) {
1432 ims = im6f_graft(imf, fmode, &ssa->sin6);
1433 if (ims == NULL)
1568 struct ip6_msource *ims;
1650 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
1651 lims = (struct in6_msource *)ims;
2103 struct in6_msource *ims;
2264 ims = im6o_match_source(imo, idx, &ssa->sa);
2265 if (ims == NULL) {
2667 struct ip6_msource *ims;
2730 RB_FOREACH(ims, ip6_msource_tree, &inm->in6m_srcs) {
2731 CTR2(KTR_MLD, "%s: visit node %p", __func__, ims);
2735 if (fmode != im6s_get_mode(inm, ims, 1)) {
2740 src = ims->im6s_addr;