Lines Matching defs:psf
127 #define for_each_psf_mclock(mc, psf) \
128 for (psf = mc_dereference((mc)->mca_sources, mc->idev); \
129 psf; \
130 psf = mc_dereference(psf->sf_next, mc->idev))
132 #define for_each_psf_rcu(mc, psf) \
133 for (psf = rcu_dereference((mc)->mca_sources); \
134 psf; \
135 psf = rcu_dereference(psf->sf_next))
137 #define for_each_psf_tomb(mc, psf) \
138 for (psf = mc_dereference((mc)->mca_tomb, mc->idev); \
139 psf; \
140 psf = mc_dereference(psf->sf_next, mc->idev))
752 struct ip6_sf_list *psf;
761 for_each_psf_mclock(pmc, psf)
762 psf->sf_crcount = pmc->mca_crcount;
772 struct ip6_sf_list *psf, *sources, *tomb;
801 for_each_psf_mclock(im, psf)
802 psf->sf_crcount = idev->mc_qrv;
829 struct ip6_sf_list *psf, *psf_next;
831 psf = mc_dereference(pmc->mca_tomb, idev);
833 for (; psf; psf = psf_next) {
834 psf_next = mc_dereference(psf->sf_next, idev);
835 kfree_rcu(psf, rcu);
1030 struct ip6_sf_list *psf;
1032 for_each_psf_rcu(mc, psf) {
1033 if (ipv6_addr_equal(&psf->sf_addr, src_addr))
1036 if (psf)
1037 rv = psf->sf_count[MCAST_INCLUDE] ||
1038 psf->sf_count[MCAST_EXCLUDE] !=
1146 struct ip6_sf_list *psf;
1150 for_each_psf_mclock(pmc, psf) {
1155 if (psf->sf_count[MCAST_INCLUDE] ||
1157 psf->sf_count[MCAST_EXCLUDE])
1159 if (ipv6_addr_equal(&srcs[i], &psf->sf_addr)) {
1175 struct ip6_sf_list *psf;
1184 for_each_psf_mclock(pmc, psf) {
1188 if (ipv6_addr_equal(&srcs[i], &psf->sf_addr)) {
1189 psf->sf_gsresp = 1;
1644 static bool is_in(struct ifmcaddr6 *pmc, struct ip6_sf_list *psf, int type,
1652 if (!((pmc->mca_flags & MAF_GSQUERY) && !psf->sf_gsresp)) {
1658 if (psf->sf_count[MCAST_INCLUDE])
1661 psf->sf_count[MCAST_EXCLUDE];
1667 return psf->sf_count[MCAST_INCLUDE] != 0;
1672 psf->sf_count[MCAST_INCLUDE])
1675 psf->sf_count[MCAST_EXCLUDE];
1677 if (gdeleted || !psf->sf_crcount)
1682 return gdeleted || (psf->sf_crcount && sdeleted);
1683 return psf->sf_crcount && !gdeleted && !sdeleted;
1691 struct ip6_sf_list *psf;
1694 for_each_psf_mclock(pmc, psf) {
1695 if (!is_in(pmc, psf, type, gdeleted, sdeleted))
1871 struct ip6_sf_list *psf, *psf_prev, *psf_next;
1912 for (psf = mc_dereference(*psf_list, idev);
1913 psf;
1914 psf = psf_next) {
1917 psf_next = mc_dereference(psf->sf_next, idev);
1919 if (!is_in(pmc, psf, type, gdeleted, sdeleted) && !crsend) {
1920 psf_prev = psf;
1930 type == MLD2_BLOCK_OLD_SOURCES) && psf->sf_crcount)
1935 psf->sf_gsresp = 0;
1956 *psrc = psf->sf_addr;
1959 type == MLD2_BLOCK_OLD_SOURCES) && psf->sf_crcount) {
1961 psf->sf_crcount--;
1962 if ((sdeleted || gdeleted) && psf->sf_crcount == 0) {
1965 mc_dereference(psf->sf_next, idev));
1968 mc_dereference(psf->sf_next, idev));
1969 kfree_rcu(psf, rcu);
1973 psf_prev = psf;
2031 struct ip6_sf_list *psf_prev, *psf_next, *psf;
2034 for (psf = mc_dereference(*ppsf, idev);
2035 psf;
2036 psf = psf_next) {
2037 psf_next = mc_dereference(psf->sf_next, idev);
2038 if (psf->sf_crcount == 0) {
2041 mc_dereference(psf->sf_next, idev));
2044 mc_dereference(psf->sf_next, idev));
2045 kfree_rcu(psf, rcu);
2047 psf_prev = psf;
2275 struct ip6_sf_list *psf, *psf_prev;
2279 for_each_psf_mclock(pmc, psf) {
2280 if (ipv6_addr_equal(&psf->sf_addr, psfsrc))
2282 psf_prev = psf;
2284 if (!psf || psf->sf_count[sfmode] == 0) {
2288 psf->sf_count[sfmode]--;
2289 if (!psf->sf_count[MCAST_INCLUDE] && !psf->sf_count[MCAST_EXCLUDE]) {
2295 mc_dereference(psf->sf_next, idev));
2298 mc_dereference(psf->sf_next, idev));
2300 if (psf->sf_oldin && !(pmc->mca_flags & MAF_NOREPORT) &&
2302 psf->sf_crcount = idev->mc_qrv;
2303 rcu_assign_pointer(psf->sf_next,
2305 rcu_assign_pointer(pmc->mca_tomb, psf);
2308 kfree_rcu(psf, rcu);
2351 struct ip6_sf_list *psf;
2357 for_each_psf_mclock(pmc, psf)
2358 psf->sf_crcount = 0;
2374 struct ip6_sf_list *psf, *psf_prev;
2377 for_each_psf_mclock(pmc, psf) {
2378 if (ipv6_addr_equal(&psf->sf_addr, psfsrc))
2380 psf_prev = psf;
2382 if (!psf) {
2383 psf = kzalloc(sizeof(*psf), GFP_KERNEL);
2384 if (!psf)
2387 psf->sf_addr = *psfsrc;
2389 rcu_assign_pointer(psf_prev->sf_next, psf);
2391 rcu_assign_pointer(pmc->mca_sources, psf);
2394 psf->sf_count[sfmode]++;
2401 struct ip6_sf_list *psf;
2404 for_each_psf_mclock(pmc, psf) {
2406 psf->sf_oldin = mca_xcount ==
2407 psf->sf_count[MCAST_EXCLUDE] &&
2408 !psf->sf_count[MCAST_INCLUDE];
2410 psf->sf_oldin = psf->sf_count[MCAST_INCLUDE] != 0;
2418 struct ip6_sf_list *psf, *dpsf;
2424 for_each_psf_mclock(pmc, psf) {
2426 new_in = mca_xcount == psf->sf_count[MCAST_EXCLUDE] &&
2427 !psf->sf_count[MCAST_INCLUDE];
2429 new_in = psf->sf_count[MCAST_INCLUDE] != 0;
2431 if (!psf->sf_oldin) {
2436 &psf->sf_addr))
2451 psf->sf_crcount = qrv;
2454 } else if (psf->sf_oldin) {
2455 psf->sf_crcount = 0;
2463 &psf->sf_addr))
2469 *dpsf = *psf;
2521 struct ip6_sf_list *psf;
2532 for_each_psf_mclock(pmc, psf)
2533 psf->sf_crcount = 0;
2544 struct ip6_sf_list *psf, *nextpsf;
2546 for (psf = mc_dereference(pmc->mca_tomb, pmc->idev);
2547 psf;
2548 psf = nextpsf) {
2549 nextpsf = mc_dereference(psf->sf_next, pmc->idev);
2550 kfree_rcu(psf, rcu);
2553 for (psf = mc_dereference(pmc->mca_sources, pmc->idev);
2554 psf;
2555 psf = nextpsf) {
2556 nextpsf = mc_dereference(psf->sf_next, pmc->idev);
2557 kfree_rcu(psf, rcu);
2973 struct ip6_sf_list *psf = NULL;
2988 psf = rcu_dereference(im->mca_sources);
2989 if (likely(psf)) {
2996 return psf;
2999 static struct ip6_sf_list *igmp6_mcf_get_next(struct seq_file *seq, struct ip6_sf_list *psf)
3003 psf = rcu_dereference(psf->sf_next);
3004 while (!psf) {
3019 psf = rcu_dereference(state->im->mca_sources);
3022 return psf;
3027 struct ip6_sf_list *psf = igmp6_mcf_get_first(seq);
3028 if (psf)
3029 while (pos && (psf = igmp6_mcf_get_next(seq, psf)) != NULL)
3031 return pos ? NULL : psf;
3043 struct ip6_sf_list *psf;
3045 psf = igmp6_mcf_get_first(seq);
3047 psf = igmp6_mcf_get_next(seq, v);
3049 return psf;
3068 struct ip6_sf_list *psf = (struct ip6_sf_list *)v;
3078 &psf->sf_addr,
3079 psf->sf_count[MCAST_INCLUDE],
3080 psf->sf_count[MCAST_EXCLUDE]);