Lines Matching defs:filter

107 	lck_group = lck_grp_alloc_init("socket filter lock", grp_attrib);
118 struct socket_filter *filter)
120 filter->sf_refcount++;
125 struct socket_filter *filter)
127 filter->sf_refcount--;
128 if (filter->sf_refcount == 0)
131 if (filter->sf_filter.sf_unregistered) {
133 filter->sf_filter.sf_unregistered(filter->sf_filter.sf_handle);
138 FREE(filter, M_IFADDR);
204 // Take the socket filter lock
238 // Pull entry off the filter list
247 // Release the filter -- may drop lock, but that's okay
254 // Drop the socket filter lock
263 struct socket_filter *filter,
269 if (filter == NULL)
274 filter->sf_filter.sf_handle)
277 /* allocate the socket filter entry */
283 /* Initialize the socket filter entry */
288 /* Put the entry in the filter list */
289 sflt_retain_locked(filter);
290 entry->sfe_filter = filter;
291 entry->sfe_next_onfilter = filter->sf_entry_head;
292 filter->sf_entry_head = entry;
294 /* Put the entry on the socket filter list */
303 // Release the filter lock -- callers must be aware we will do this
310 // It's finally safe to call the filter function
320 // If the attach function returns an error, this filter must be detached
345 struct socket_filter *filter = NULL;
346 TAILQ_FOREACH(filter, &sock_filter_head, sf_global_next) {
347 if (filter->sf_filter.sf_handle == handle) break;
350 if (filter) {
351 result = sflt_attach_locked(socket, filter, 1);
383 // Warning: A filter unregistering will be pulled out of the list.
386 // on the filter (or next_filter) while calling this function
390 // we're attaching a filter as it is removed, if that's possible.
391 struct socket_filter *filter = TAILQ_FIRST(&proto->pr_filter_head);
392 sflt_retain_locked(filter);
394 while (filter)
399 sflt_attach_locked(so, filter, 0);
401 filter_next = TAILQ_NEXT(filter, sf_protosw_next);
405 // Warning: filt_release_locked may remove the filter from the queue
406 sflt_release_locked(filter);
407 filter = filter_next;
428 // Pull filter off the socket
436 // Call the detach function - this is gross because the socket filter
444 // Retain the socket filter
455 // Release the filter
482 // Retain the filter entry and release the socket filter lock
492 // Finally call the filter
496 // Take the socket filter lock again and release the entry
543 // Retain the filter entry and release the socket filter lock
553 // Call the filter
557 // Take the socket filter lock again and release the entry
587 // Retain the filter entry and release the socket filter lock
597 // Call the filter
601 // Take the socket filter lock again and release the entry
630 // Retain the filter entry and release the socket filter lock
640 // Call the filter
644 // Take the socket filter lock again and release the entry
676 // Retain the filter entry and release the socket filter lock
686 // Call the filter
690 // Take the socket filter lock again and release the entry
720 // Retain the filter entry and release the socket filter lock
730 // Call the filter
734 // Take the socket filter lock again and release the entry
764 // Retain the filter entry and release the socket filter lock
774 // Call the filter
778 // Take the socket filter lock again and release the entry
808 // Retain the filter entry and release the socket filter lock
818 // Call the filter
822 // Take the socket filter lock again and release the entry
852 // Retain the filter entry and release the socket filter lock
862 // Call the filter
866 // Take the socket filter lock again and release the entry
896 // Retain the filter entry and release the socket filter lock
906 // Call the filter
910 // Take the socket filter lock again and release the entry
940 // Retain the filter entry and release the socket filter lock
950 // Call the filter
954 // Take the socket filter lock again and release the entry
988 // Retain the filter entry and release the socket filter lock
1002 // Call the filter
1006 // Take the socket filter lock again and release the entry
1041 // Retain the filter entry and release the socket filter lock
1051 // Call the filter
1055 // Take the socket filter lock again and release the entry
1117 const struct sflt_filter *filter,
1134 if (filter->sf_attach == NULL || filter->sf_detach == NULL ||
1135 filter->sf_handle == 0 || filter->sf_name == NULL)
1138 /* Allocate the socket filter */
1148 len = sizeof (*filter) - sizeof (struct sflt_filter_ext);
1150 * Include extended fields if filter defines SFLT_EXTENDED.
1154 if (filter->sf_flags & SFLT_EXTENDED) {
1155 unsigned int ext_len = filter->sf_len;
1162 bcopy(filter, &sock_filt->sf_filter, len);
1190 if (!(filter->sf_flags & SFLT_EXTENDED_REGISTRY))
1194 * Setup the filter on the TCP and UDP sockets already created.
1239 sflt_handle handle = filter->sf_handle;
1280 struct socket_filter *filter;
1284 TAILQ_FOREACH(filter, &sock_filter_head, sf_global_next) {
1285 if (filter->sf_filter.sf_handle == handle)
1289 if (filter) {
1291 TAILQ_REMOVE(&sock_filter_head, filter, sf_global_next);
1294 if ((filter->sf_filter.sf_flags & SFLT_GLOBAL) != 0) {
1295 TAILQ_REMOVE(&filter->sf_proto->pr_filter_head, filter, sf_protosw_next);
1301 for (entry = filter->sf_entry_head; entry; entry = entry->sfe_next_onfilter) {
1305 // Release the filter
1306 sflt_release_locked(filter);
1311 if (filter == NULL)