Lines Matching defs:ims

126 static void	im6s_merge(struct ip6_msource *ims,
397 struct ip6_msource *ims;
413 ims = RB_FIND(ip6_msource_tree, &imf->im6f_sources, &find);
415 return ((struct in6_msource *)ims);
429 struct in6_msource *ims;
449 ims = im6o_match_source(imo, gidx, src);
451 if ((ims == NULL && mode == MCAST_INCLUDE) ||
452 (ims != NULL && ims->im6sl_st[0] != mode))
608 struct ip6_msource *ims;
612 RB_FOREACH(ims, ip6_msource_tree, &inm->in6m_srcs) {
613 if (ims->im6s_stp) {
614 ims->im6s_stp = 0;
647 struct ip6_msource *ims, *nims;
652 ims = RB_FIND(ip6_msource_tree, &inm->in6m_srcs, &find);
653 if (ims && ims->im6s_stp)
655 if (ims == NULL) {
664 ims = nims;
671 ++ims->im6s_stp;
693 struct ip6_msource *ims;
698 ims = NULL;
702 ims = RB_FIND(ip6_msource_tree, &imf->im6f_sources, &find);
703 lims = (struct in6_msource *)ims;
765 struct ip6_msource *ims;
769 ims = RB_FIND(ip6_msource_tree, &imf->im6f_sources, &find);
770 if (ims == NULL)
772 lims = (struct in6_msource *)ims;
785 struct ip6_msource *ims, *tims;
788 RB_FOREACH_SAFE(ims, ip6_msource_tree, &imf->im6f_sources, tims) {
789 lims = (struct in6_msource *)ims;
799 RB_REMOVE(ip6_msource_tree, &imf->im6f_sources, ims);
815 struct ip6_msource *ims;
818 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
819 lims = (struct in6_msource *)ims;
833 struct ip6_msource *ims;
836 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
837 lims = (struct in6_msource *)ims;
851 struct ip6_msource *ims, *tims;
854 RB_FOREACH_SAFE(ims, ip6_msource_tree, &imf->im6f_sources, tims) {
855 lims = (struct in6_msource *)ims;
859 RB_REMOVE(ip6_msource_tree, &imf->im6f_sources, ims);
874 struct ip6_msource *ims, *tims;
877 RB_FOREACH_SAFE(ims, ip6_msource_tree, &imf->im6f_sources, tims) {
878 lims = (struct in6_msource *)ims;
880 RB_REMOVE(ip6_msource_tree, &imf->im6f_sources, ims);
903 struct ip6_msource *ims, *nims;
908 ims = RB_FIND(ip6_msource_tree, &inm->in6m_srcs, &find);
909 if (ims == NULL && !noalloc) {
918 ims = nims;
920 ip6_sprintf(addr), ims));
923 *pims = ims;
936 im6s_get_mode(const struct in6_multi *inm, const struct ip6_msource *ims,
943 inm->in6m_st[t].iss_ex == ims->im6s_st[t].ex)
945 else if (ims->im6s_st[t].in > 0 && ims->im6s_st[t].ex == 0)
955 im6s_merge(struct ip6_msource *ims, const struct in6_msource *lims,
963 ims->im6s_st[1].ex -= n;
967 ims->im6s_st[1].in -= n;
973 ims->im6s_st[1].ex += n;
977 ims->im6s_st[1].in += n;
989 * which would eliminate the repeated lookup from root of ims nodes,
998 struct ip6_msource *ims, *nims;
1016 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
1017 lims = (struct in6_msource *)ims;
1030 RB_FOREACH_REVERSE_FROM(ims, ip6_msource_tree, nims) {
1031 lims = (struct in6_msource *)ims;
1128 struct ip6_msource *ims;
1136 RB_FOREACH(ims, ip6_msource_tree, &inm->in6m_srcs) {
1137 ims->im6s_st[0] = ims->im6s_st[1];
1148 struct ip6_msource *ims, *tims;
1152 RB_FOREACH_SAFE(ims, ip6_msource_tree, &inm->in6m_srcs, tims) {
1153 if (ims->im6s_st[0].ex > 0 || ims->im6s_st[0].in > 0 ||
1154 ims->im6s_st[1].ex > 0 || ims->im6s_st[1].in > 0 ||
1155 ims->im6s_stp != 0)
1157 MLD_PRINTF(("%s: free ims %p\n", __func__, ims));
1158 RB_REMOVE(ip6_msource_tree, &inm->in6m_srcs, ims);
1159 ip6ms_free(ims);
1170 struct ip6_msource *ims, *tims;
1174 RB_FOREACH_SAFE(ims, ip6_msource_tree, &inm->in6m_srcs, tims) {
1175 MLD_PRINTF(("%s: free ims %p\n", __func__, ims));
1176 RB_REMOVE(ip6_msource_tree, &inm->in6m_srcs, ims);
1177 ip6ms_free(ims);
1394 struct in6_msource *ims;
1488 ims = im6o_match_source(imo, idx, &ssa->sa);
1489 if ((ims != NULL && doblock) || (ims == NULL && !doblock)) {
1502 ims = im6f_graft(imf, fmode, &ssa->sin6);
1503 if (ims == NULL)
1617 struct ip6_msource *ims;
1726 RB_FOREACH(ims, ip6_msource_tree, &imf->im6f_sources) {
1727 lims = (struct in6_msource *)ims;
2284 struct in6_msource *ims;
2479 ims = im6o_match_source(imo, idx, &ssa->sa);
2480 if (ims == NULL) {
2943 struct ip6_msource *ims;
3003 RB_FOREACH(ims, ip6_msource_tree, &inm->in6m_srcs) {
3004 MLD_PRINTF(("%s: visit node %p\n", __func__, ims));
3008 if (fmode != im6s_get_mode(inm, ims, 1)) {
3013 src = ims->im6s_addr;