* Reap unreferenced sources from socket-layer filter set. */
| 902 | * Reap unreferenced sources from socket-layer filter set. |
| 903 | */ |
| 904 | static void |
| 905 | imf_reap(struct in_mfilter *imf) |
| 906 | { |
| 907 | struct ip_msource *ims, *tims; |
| 908 | struct in_msource *lims; |
| 909 | |
| 910 | RB_FOREACH_SAFE(ims, ip_msource_tree, &imf->imf_sources, tims) { |
| 911 | lims = (struct in_msource *)ims; |
| 912 | if ((lims->imsl_st[0] == MCAST_UNDEFINED) && |
| 913 | (lims->imsl_st[1] == MCAST_UNDEFINED)) { |
| 914 | CTR2(KTR_IGMPV3, "%s: free lims %p", __func__, ims); |
| 915 | RB_REMOVE(ip_msource_tree, &imf->imf_sources, ims); |
| 916 | free(ims, M_INMFILTER); |
| 917 | imf->imf_nsrc--; |
| 918 | } |
| 919 | } |
| 920 | } |
| 921 | |
| 922 | /* |
| 923 | * Purge socket-layer filter set. |
no test coverage detected