Lines Matching refs:psf
267 static int is_in(struct ip_mc_list *pmc, struct ip_sf_list *psf, int type, in is_in() argument
275 if (!(pmc->gsquery && !psf->sf_gsresp)) { in is_in()
281 if (psf->sf_count[MCAST_INCLUDE]) in is_in()
284 psf->sf_count[MCAST_EXCLUDE]; in is_in()
290 return psf->sf_count[MCAST_INCLUDE] != 0; in is_in()
295 psf->sf_count[MCAST_INCLUDE]) in is_in()
298 psf->sf_count[MCAST_EXCLUDE]; in is_in()
300 if (gdeleted || !psf->sf_crcount) in is_in()
305 return gdeleted || (psf->sf_crcount && sdeleted); in is_in()
306 return psf->sf_crcount && !gdeleted && !sdeleted; in is_in()
314 struct ip_sf_list *psf; in igmp_scount() local
317 for (psf = pmc->sources; psf; psf = psf->sf_next) { in igmp_scount()
318 if (!is_in(pmc, psf, type, gdeleted, sdeleted)) in igmp_scount()
460 struct ip_sf_list *psf, *psf_next, *psf_prev, **psf_list; in add_grec() local
498 for (psf = *psf_list; psf; psf = psf_next) { in add_grec()
501 psf_next = psf->sf_next; in add_grec()
503 if (!is_in(pmc, psf, type, gdeleted, sdeleted)) { in add_grec()
504 psf_prev = psf; in add_grec()
514 type == IGMPV3_BLOCK_OLD_SOURCES) && psf->sf_crcount) in add_grec()
519 psf->sf_gsresp = 0; in add_grec()
540 *psrc = psf->sf_inaddr; in add_grec()
543 type == IGMPV3_BLOCK_OLD_SOURCES) && psf->sf_crcount) { in add_grec()
545 psf->sf_crcount--; in add_grec()
546 if ((sdeleted || gdeleted) && psf->sf_crcount == 0) { in add_grec()
548 psf_prev->sf_next = psf->sf_next; in add_grec()
550 *psf_list = psf->sf_next; in add_grec()
551 kfree(psf); in add_grec()
555 psf_prev = psf; in add_grec()
622 struct ip_sf_list *psf_prev, *psf_next, *psf; in igmpv3_clear_zeros() local
625 for (psf = *ppsf; psf; psf = psf_next) { in igmpv3_clear_zeros()
626 psf_next = psf->sf_next; in igmpv3_clear_zeros()
627 if (psf->sf_crcount == 0) { in igmpv3_clear_zeros()
629 psf_prev->sf_next = psf->sf_next; in igmpv3_clear_zeros()
631 *ppsf = psf->sf_next; in igmpv3_clear_zeros()
632 kfree(psf); in igmpv3_clear_zeros()
634 psf_prev = psf; in igmpv3_clear_zeros()
842 struct ip_sf_list *psf; in igmp_xmarksources() local
846 for (psf = pmc->sources; psf; psf = psf->sf_next) { in igmp_xmarksources()
851 if (psf->sf_count[MCAST_INCLUDE] || in igmp_xmarksources()
853 psf->sf_count[MCAST_EXCLUDE]) in igmp_xmarksources()
855 if (srcs[i] == psf->sf_inaddr) { in igmp_xmarksources()
869 struct ip_sf_list *psf; in igmp_marksources() local
877 for (psf = pmc->sources; psf; psf = psf->sf_next) { in igmp_marksources()
881 if (srcs[i] == psf->sf_inaddr) { in igmp_marksources()
882 psf->sf_gsresp = 1; in igmp_marksources()
1158 struct ip_sf_list *psf; in igmpv3_add_delrec() local
1163 for (psf = pmc->sources; psf; psf = psf->sf_next) in igmpv3_add_delrec()
1164 psf->sf_crcount = pmc->crcount; in igmpv3_add_delrec()
1180 struct ip_sf_list *psf; in igmpv3_del_delrec() local
1205 for (psf = im->sources; psf; psf = psf->sf_next) in igmpv3_del_delrec()
1206 psf->sf_crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in igmpv3_del_delrec()
1237 struct ip_sf_list *psf, *psf_next; in igmpv3_clear_delrec() local
1240 psf = pmc->tomb; in igmpv3_clear_delrec()
1243 for (; psf; psf = psf_next) { in igmpv3_clear_delrec()
1244 psf_next = psf->sf_next; in igmpv3_clear_delrec()
1245 kfree(psf); in igmpv3_clear_delrec()
1828 struct ip_sf_list *psf, *psf_prev; in ip_mc_del1_src() local
1832 for (psf = pmc->sources; psf; psf = psf->sf_next) { in ip_mc_del1_src()
1833 if (psf->sf_inaddr == *psfsrc) in ip_mc_del1_src()
1835 psf_prev = psf; in ip_mc_del1_src()
1837 if (!psf || psf->sf_count[sfmode] == 0) { in ip_mc_del1_src()
1841 psf->sf_count[sfmode]--; in ip_mc_del1_src()
1842 if (psf->sf_count[sfmode] == 0) { in ip_mc_del1_src()
1845 if (!psf->sf_count[MCAST_INCLUDE] && !psf->sf_count[MCAST_EXCLUDE]) { in ip_mc_del1_src()
1853 psf_prev->sf_next = psf->sf_next; in ip_mc_del1_src()
1855 pmc->sources = psf->sf_next; in ip_mc_del1_src()
1857 if (psf->sf_oldin && in ip_mc_del1_src()
1859 psf->sf_crcount = in_dev->mr_qrv ?: net->ipv4.sysctl_igmp_qrv; in ip_mc_del1_src()
1860 psf->sf_next = pmc->tomb; in ip_mc_del1_src()
1861 pmc->tomb = psf; in ip_mc_del1_src()
1865 kfree(psf); in ip_mc_del1_src()
1916 struct ip_sf_list *psf; in ip_mc_del_src() local
1925 for (psf = pmc->sources; psf; psf = psf->sf_next) in ip_mc_del_src()
1926 psf->sf_crcount = 0; in ip_mc_del_src()
1943 struct ip_sf_list *psf, *psf_prev; in ip_mc_add1_src() local
1946 for (psf = pmc->sources; psf; psf = psf->sf_next) { in ip_mc_add1_src()
1947 if (psf->sf_inaddr == *psfsrc) in ip_mc_add1_src()
1949 psf_prev = psf; in ip_mc_add1_src()
1951 if (!psf) { in ip_mc_add1_src()
1952 psf = kzalloc(sizeof(*psf), GFP_ATOMIC); in ip_mc_add1_src()
1953 if (!psf) in ip_mc_add1_src()
1955 psf->sf_inaddr = *psfsrc; in ip_mc_add1_src()
1957 psf_prev->sf_next = psf; in ip_mc_add1_src()
1959 pmc->sources = psf; in ip_mc_add1_src()
1961 psf->sf_count[sfmode]++; in ip_mc_add1_src()
1962 if (psf->sf_count[sfmode] == 1) { in ip_mc_add1_src()
1971 struct ip_sf_list *psf; in sf_markstate() local
1974 for (psf = pmc->sources; psf; psf = psf->sf_next) in sf_markstate()
1976 psf->sf_oldin = mca_xcount == in sf_markstate()
1977 psf->sf_count[MCAST_EXCLUDE] && in sf_markstate()
1978 !psf->sf_count[MCAST_INCLUDE]; in sf_markstate()
1980 psf->sf_oldin = psf->sf_count[MCAST_INCLUDE] != 0; in sf_markstate()
1985 struct ip_sf_list *psf, *dpsf; in sf_setstate() local
1991 for (psf = pmc->sources; psf; psf = psf->sf_next) { in sf_setstate()
1993 new_in = mca_xcount == psf->sf_count[MCAST_EXCLUDE] && in sf_setstate()
1994 !psf->sf_count[MCAST_INCLUDE]; in sf_setstate()
1996 new_in = psf->sf_count[MCAST_INCLUDE] != 0; in sf_setstate()
1998 if (!psf->sf_oldin) { in sf_setstate()
2002 if (dpsf->sf_inaddr == psf->sf_inaddr) in sf_setstate()
2013 psf->sf_crcount = qrv; in sf_setstate()
2016 } else if (psf->sf_oldin) { in sf_setstate()
2018 psf->sf_crcount = 0; in sf_setstate()
2024 if (dpsf->sf_inaddr == psf->sf_inaddr) in sf_setstate()
2030 *dpsf = *psf; in sf_setstate()
2089 struct ip_sf_list *psf; in ip_mc_add_src() local
2104 for (psf = pmc->sources; psf; psf = psf->sf_next) in ip_mc_add_src()
2105 psf->sf_crcount = 0; in ip_mc_add_src()
2117 struct ip_sf_list *psf, *nextpsf, *tomb, *sources; in ip_mc_clear_src() local
2129 for (psf = tomb; psf; psf = nextpsf) { in ip_mc_clear_src()
2130 nextpsf = psf->sf_next; in ip_mc_clear_src()
2131 kfree(psf); in ip_mc_clear_src()
2133 for (psf = sources; psf; psf = nextpsf) { in ip_mc_clear_src()
2134 nextpsf = psf->sf_next; in ip_mc_clear_src()
2135 kfree(psf); in ip_mc_clear_src()
2210 struct ip_sf_socklist *psf = rtnl_dereference(iml->sflist); in ip_mc_leave_src() local
2213 if (!psf) { in ip_mc_leave_src()
2219 iml->sfmode, psf->sl_count, psf->sl_addr, 0); in ip_mc_leave_src()
2222 atomic_sub(IP_SFLSIZE(psf->sl_max), &sk->sk_omem_alloc); in ip_mc_leave_src()
2223 kfree_rcu(psf, rcu); in ip_mc_leave_src()
2687 struct ip_sf_list *psf; in ip_check_mc_rcu() local
2710 for (psf = im->sources; psf; psf = psf->sf_next) { in ip_check_mc_rcu()
2711 if (psf->sf_inaddr == src_addr) in ip_check_mc_rcu()
2714 if (psf) in ip_check_mc_rcu()
2715 rv = psf->sf_count[MCAST_INCLUDE] || in ip_check_mc_rcu()
2716 psf->sf_count[MCAST_EXCLUDE] != in ip_check_mc_rcu()
2867 struct ip_sf_list *psf = NULL; in igmp_mcf_get_first() local
2881 psf = im->sources; in igmp_mcf_get_first()
2882 if (likely(psf)) { in igmp_mcf_get_first()
2890 return psf; in igmp_mcf_get_first()
2893 static struct ip_sf_list *igmp_mcf_get_next(struct seq_file *seq, struct ip_sf_list *psf) in igmp_mcf_get_next() argument
2897 psf = psf->sf_next; in igmp_mcf_get_next()
2898 while (!psf) { in igmp_mcf_get_next()
2915 psf = state->im->sources; in igmp_mcf_get_next()
2918 return psf; in igmp_mcf_get_next()
2923 struct ip_sf_list *psf = igmp_mcf_get_first(seq); in igmp_mcf_get_idx() local
2924 if (psf) in igmp_mcf_get_idx()
2925 while (pos && (psf = igmp_mcf_get_next(seq, psf)) != NULL) in igmp_mcf_get_idx()
2927 return pos ? NULL : psf; in igmp_mcf_get_idx()
2939 struct ip_sf_list *psf; in igmp_mcf_seq_next() local
2941 psf = igmp_mcf_get_first(seq); in igmp_mcf_seq_next()
2943 psf = igmp_mcf_get_next(seq, v); in igmp_mcf_seq_next()
2945 return psf; in igmp_mcf_seq_next()
2963 struct ip_sf_list *psf = (struct ip_sf_list *)v; in igmp_mcf_seq_show() local
2974 ntohl(psf->sf_inaddr), in igmp_mcf_seq_show()
2975 psf->sf_count[MCAST_INCLUDE], in igmp_mcf_seq_show()
2976 psf->sf_count[MCAST_EXCLUDE]); in igmp_mcf_seq_show()