- int filtered = 0;
- struct socket_filter_entry *filter;
-
- for (filter = so->so_filt; filter && error == 0;
- filter = filter->sfe_next_onsocket) {
- if (filter->sfe_filter->sf_filter.sf_ioctl) {
- if (filtered == 0) {
- sflt_use(so);
- socket_unlock(so, 0);
- filtered = 1;
- }
- error = filter->sfe_filter->sf_filter.
- sf_ioctl(filter->sfe_cookie, so, cmd, data);
- }
- }
-
- if (filtered) {
- socket_lock(so, 0);
- sflt_unuse(so);
- }
-