Lines Matching refs:psf

264 static int is_in(struct ip_mc_list *pmc, struct ip_sf_list *psf, int type,  in is_in()  argument
272 if (!(pmc->gsquery && !psf->sf_gsresp)) { in is_in()
278 if (psf->sf_count[MCAST_INCLUDE]) in is_in()
281 psf->sf_count[MCAST_EXCLUDE]; in is_in()
287 return psf->sf_count[MCAST_INCLUDE] != 0; in is_in()
292 psf->sf_count[MCAST_INCLUDE]) in is_in()
295 psf->sf_count[MCAST_EXCLUDE]; in is_in()
297 if (gdeleted || !psf->sf_crcount) in is_in()
302 return gdeleted || (psf->sf_crcount && sdeleted); in is_in()
303 return psf->sf_crcount && !gdeleted && !sdeleted; in is_in()
311 struct ip_sf_list *psf; in igmp_scount() local
314 for (psf = pmc->sources; psf; psf = psf->sf_next) { in igmp_scount()
315 if (!is_in(pmc, psf, type, gdeleted, sdeleted)) in igmp_scount()
435 struct ip_sf_list *psf, *psf_next, *psf_prev, **psf_list; in add_grec() local
466 for (psf = *psf_list; psf; psf = psf_next) { in add_grec()
469 psf_next = psf->sf_next; in add_grec()
471 if (!is_in(pmc, psf, type, gdeleted, sdeleted)) { in add_grec()
472 psf_prev = psf; in add_grec()
478 psf->sf_gsresp = 0; in add_grec()
499 *psrc = psf->sf_inaddr; in add_grec()
502 type == IGMPV3_BLOCK_OLD_SOURCES) && psf->sf_crcount) { in add_grec()
503 psf->sf_crcount--; in add_grec()
504 if ((sdeleted || gdeleted) && psf->sf_crcount == 0) { in add_grec()
506 psf_prev->sf_next = psf->sf_next; in add_grec()
508 *psf_list = psf->sf_next; in add_grec()
509 kfree(psf); in add_grec()
513 psf_prev = psf; in add_grec()
576 struct ip_sf_list *psf_prev, *psf_next, *psf; in igmpv3_clear_zeros() local
579 for (psf = *ppsf; psf; psf = psf_next) { in igmpv3_clear_zeros()
580 psf_next = psf->sf_next; in igmpv3_clear_zeros()
581 if (psf->sf_crcount == 0) { in igmpv3_clear_zeros()
583 psf_prev->sf_next = psf->sf_next; in igmpv3_clear_zeros()
585 *ppsf = psf->sf_next; in igmpv3_clear_zeros()
586 kfree(psf); in igmpv3_clear_zeros()
588 psf_prev = psf; in igmpv3_clear_zeros()
792 struct ip_sf_list *psf; in igmp_xmarksources() local
796 for (psf = pmc->sources; psf; psf = psf->sf_next) { in igmp_xmarksources()
801 if (psf->sf_count[MCAST_INCLUDE] || in igmp_xmarksources()
803 psf->sf_count[MCAST_EXCLUDE]) in igmp_xmarksources()
805 if (srcs[i] == psf->sf_inaddr) { in igmp_xmarksources()
819 struct ip_sf_list *psf; in igmp_marksources() local
827 for (psf = pmc->sources; psf; psf = psf->sf_next) { in igmp_marksources()
831 if (srcs[i] == psf->sf_inaddr) { in igmp_marksources()
832 psf->sf_gsresp = 1; in igmp_marksources()
1091 struct ip_sf_list *psf; in igmpv3_add_delrec() local
1096 for (psf = pmc->sources; psf; psf = psf->sf_next) in igmpv3_add_delrec()
1097 psf->sf_crcount = pmc->crcount; in igmpv3_add_delrec()
1110 struct ip_sf_list *psf, *psf_next; in igmpv3_del_delrec() local
1127 for (psf = pmc->tomb; psf; psf = psf_next) { in igmpv3_del_delrec()
1128 psf_next = psf->sf_next; in igmpv3_del_delrec()
1129 kfree(psf); in igmpv3_del_delrec()
1154 struct ip_sf_list *psf, *psf_next; in igmpv3_clear_delrec() local
1157 psf = pmc->tomb; in igmpv3_clear_delrec()
1160 for (; psf; psf = psf_next) { in igmpv3_clear_delrec()
1161 psf_next = psf->sf_next; in igmpv3_clear_delrec()
1162 kfree(psf); in igmpv3_clear_delrec()
1550 struct ip_sf_list *psf, *psf_prev; in ip_mc_del1_src() local
1554 for (psf = pmc->sources; psf; psf = psf->sf_next) { in ip_mc_del1_src()
1555 if (psf->sf_inaddr == *psfsrc) in ip_mc_del1_src()
1557 psf_prev = psf; in ip_mc_del1_src()
1559 if (!psf || psf->sf_count[sfmode] == 0) { in ip_mc_del1_src()
1563 psf->sf_count[sfmode]--; in ip_mc_del1_src()
1564 if (psf->sf_count[sfmode] == 0) { in ip_mc_del1_src()
1567 if (!psf->sf_count[MCAST_INCLUDE] && !psf->sf_count[MCAST_EXCLUDE]) { in ip_mc_del1_src()
1574 psf_prev->sf_next = psf->sf_next; in ip_mc_del1_src()
1576 pmc->sources = psf->sf_next; in ip_mc_del1_src()
1578 if (psf->sf_oldin && in ip_mc_del1_src()
1580 psf->sf_crcount = in_dev->mr_qrv ?: sysctl_igmp_qrv; in ip_mc_del1_src()
1581 psf->sf_next = pmc->tomb; in ip_mc_del1_src()
1582 pmc->tomb = psf; in ip_mc_del1_src()
1586 kfree(psf); in ip_mc_del1_src()
1637 struct ip_sf_list *psf; in ip_mc_del_src() local
1645 for (psf = pmc->sources; psf; psf = psf->sf_next) in ip_mc_del_src()
1646 psf->sf_crcount = 0; in ip_mc_del_src()
1663 struct ip_sf_list *psf, *psf_prev; in ip_mc_add1_src() local
1666 for (psf = pmc->sources; psf; psf = psf->sf_next) { in ip_mc_add1_src()
1667 if (psf->sf_inaddr == *psfsrc) in ip_mc_add1_src()
1669 psf_prev = psf; in ip_mc_add1_src()
1671 if (!psf) { in ip_mc_add1_src()
1672 psf = kzalloc(sizeof(*psf), GFP_ATOMIC); in ip_mc_add1_src()
1673 if (!psf) in ip_mc_add1_src()
1675 psf->sf_inaddr = *psfsrc; in ip_mc_add1_src()
1677 psf_prev->sf_next = psf; in ip_mc_add1_src()
1679 pmc->sources = psf; in ip_mc_add1_src()
1681 psf->sf_count[sfmode]++; in ip_mc_add1_src()
1682 if (psf->sf_count[sfmode] == 1) { in ip_mc_add1_src()
1691 struct ip_sf_list *psf; in sf_markstate() local
1694 for (psf = pmc->sources; psf; psf = psf->sf_next) in sf_markstate()
1696 psf->sf_oldin = mca_xcount == in sf_markstate()
1697 psf->sf_count[MCAST_EXCLUDE] && in sf_markstate()
1698 !psf->sf_count[MCAST_INCLUDE]; in sf_markstate()
1700 psf->sf_oldin = psf->sf_count[MCAST_INCLUDE] != 0; in sf_markstate()
1705 struct ip_sf_list *psf, *dpsf; in sf_setstate() local
1711 for (psf = pmc->sources; psf; psf = psf->sf_next) { in sf_setstate()
1713 new_in = mca_xcount == psf->sf_count[MCAST_EXCLUDE] && in sf_setstate()
1714 !psf->sf_count[MCAST_INCLUDE]; in sf_setstate()
1716 new_in = psf->sf_count[MCAST_INCLUDE] != 0; in sf_setstate()
1718 if (!psf->sf_oldin) { in sf_setstate()
1722 if (dpsf->sf_inaddr == psf->sf_inaddr) in sf_setstate()
1733 psf->sf_crcount = qrv; in sf_setstate()
1736 } else if (psf->sf_oldin) { in sf_setstate()
1738 psf->sf_crcount = 0; in sf_setstate()
1744 if (dpsf->sf_inaddr == psf->sf_inaddr) in sf_setstate()
1750 *dpsf = *psf; in sf_setstate()
1809 struct ip_sf_list *psf; in ip_mc_add_src() local
1823 for (psf = pmc->sources; psf; psf = psf->sf_next) in ip_mc_add_src()
1824 psf->sf_crcount = 0; in ip_mc_add_src()
1836 struct ip_sf_list *psf, *nextpsf; in ip_mc_clear_src() local
1838 for (psf = pmc->tomb; psf; psf = nextpsf) { in ip_mc_clear_src()
1839 nextpsf = psf->sf_next; in ip_mc_clear_src()
1840 kfree(psf); in ip_mc_clear_src()
1843 for (psf = pmc->sources; psf; psf = nextpsf) { in ip_mc_clear_src()
1844 nextpsf = psf->sf_next; in ip_mc_clear_src()
1845 kfree(psf); in ip_mc_clear_src()
1909 struct ip_sf_socklist *psf = rtnl_dereference(iml->sflist); in ip_mc_leave_src() local
1912 if (!psf) { in ip_mc_leave_src()
1918 iml->sfmode, psf->sl_count, psf->sl_addr, 0); in ip_mc_leave_src()
1921 atomic_sub(IP_SFLSIZE(psf->sl_max), &sk->sk_omem_alloc); in ip_mc_leave_src()
1922 kfree_rcu(psf, rcu); in ip_mc_leave_src()
2387 struct ip_sf_list *psf; in ip_check_mc_rcu() local
2410 for (psf = im->sources; psf; psf = psf->sf_next) { in ip_check_mc_rcu()
2411 if (psf->sf_inaddr == src_addr) in ip_check_mc_rcu()
2414 if (psf) in ip_check_mc_rcu()
2415 rv = psf->sf_count[MCAST_INCLUDE] || in ip_check_mc_rcu()
2416 psf->sf_count[MCAST_EXCLUDE] != in ip_check_mc_rcu()
2581 struct ip_sf_list *psf = NULL; in igmp_mcf_get_first() local
2595 psf = im->sources; in igmp_mcf_get_first()
2596 if (likely(psf)) { in igmp_mcf_get_first()
2604 return psf; in igmp_mcf_get_first()
2607 static struct ip_sf_list *igmp_mcf_get_next(struct seq_file *seq, struct ip_sf_list *psf) in igmp_mcf_get_next() argument
2611 psf = psf->sf_next; in igmp_mcf_get_next()
2612 while (!psf) { in igmp_mcf_get_next()
2629 psf = state->im->sources; in igmp_mcf_get_next()
2632 return psf; in igmp_mcf_get_next()
2637 struct ip_sf_list *psf = igmp_mcf_get_first(seq); in igmp_mcf_get_idx() local
2638 if (psf) in igmp_mcf_get_idx()
2639 while (pos && (psf = igmp_mcf_get_next(seq, psf)) != NULL) in igmp_mcf_get_idx()
2641 return pos ? NULL : psf; in igmp_mcf_get_idx()
2653 struct ip_sf_list *psf; in igmp_mcf_seq_next() local
2655 psf = igmp_mcf_get_first(seq); in igmp_mcf_seq_next()
2657 psf = igmp_mcf_get_next(seq, v); in igmp_mcf_seq_next()
2659 return psf; in igmp_mcf_seq_next()
2677 struct ip_sf_list *psf = (struct ip_sf_list *)v; in igmp_mcf_seq_show() local
2688 ntohl(psf->sf_inaddr), in igmp_mcf_seq_show()
2689 psf->sf_count[MCAST_INCLUDE], in igmp_mcf_seq_show()
2690 psf->sf_count[MCAST_EXCLUDE]); in igmp_mcf_seq_show()