• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/kern/

Lines Matching refs:entry

46 static void	sflt_detach_private(struct socket_filter_entry *entry, int unregistering);
201 struct socket_filter_entry *entry = NULL;
220 /* allocate the socket filter entry */
221 MALLOC(entry, struct socket_filter_entry *, sizeof(*entry), M_IFADDR, M_WAITOK);
222 if (entry == NULL) {
228 /* Initialize the socket filter entry and call the attach function */
229 entry->sfe_filter = filter;
230 entry->sfe_socket = so;
231 entry->sfe_cookie = NULL;
232 entry->sfe_flags = 0;
233 if (entry->sfe_filter->sf_filter.sf_attach) {
238 error = entry->sfe_filter->sf_filter.sf_attach(&entry->sfe_cookie, so);
246 FREE(entry, M_IFADDR);
247 entry = NULL;
253 /* Put the entry in the socket list */
254 entry->sfe_next_onsocket = so->so_filt;
255 so->so_filt = entry;
257 /* Put the entry in the filter list */
258 entry->sfe_next_onfilter = filter->sf_entry_head;
259 filter->sf_entry_head = entry;
276 * socket lock for the socket the entry is attached to. If you pass 1 in for
277 * the second parameter, it is assumed that the entry is not on the filter's
283 struct socket_filter_entry *entry,
291 socket_lock(entry->sfe_socket, 0);
295 * Attempt to find the entry on the filter's list and
297 * same time from attempting to remove the same entry.
301 if ((entry->sfe_flags & SFEF_UNREGISTERING) != 0) {
312 if (!(entry->sfe_flags & SFEF_DETACHXREF)) {
313 entry->sfe_socket->so_usecount++;
314 entry->sfe_flags |= SFEF_DETACHXREF;
319 for (next_ptr = &entry->sfe_filter->sf_entry_head; *next_ptr;
321 if (*next_ptr == entry) {
323 *next_ptr = entry->sfe_next_onfilter;
328 if (!found && (entry->sfe_flags & SFEF_DETACHUSEZERO) == 0) {
338 entry->sfe_flags &= ~SFEF_UNREGISTERING;
339 if (!(entry->sfe_flags & SFEF_DETACHXREF)) {
340 entry->sfe_socket->so_usecount++;
341 entry->sfe_flags |= SFEF_DETACHXREF;
345 if (entry->sfe_socket->so_filteruse != 0) {
346 entry->sfe_flags |= SFEF_DETACHUSEZERO;
353 entry->sfe_socket, entry->sfe_socket->so_filteruse,
354 entry->sfe_socket->so_usecount);
356 socket_unlock(entry->sfe_socket, 0);
365 entry->sfe_filter->sf_usecount--;
366 if ((entry->sfe_filter->sf_usecount == 0) &&
367 (entry->sfe_filter->sf_flags & SFF_DETACHING) != 0)
373 for (next_ptr = &entry->sfe_socket->so_filt; *next_ptr;
375 if (*next_ptr == entry) {
376 *next_ptr = entry->sfe_next_onsocket;
381 if (entry->sfe_filter->sf_filter.sf_detach)
382 entry->sfe_filter->sf_filter.sf_detach(entry->sfe_cookie, entry->sfe_socket);
384 if (detached && entry->sfe_filter->sf_filter.sf_unregistered) {
385 entry->sfe_filter->sf_filter.sf_unregistered(entry->sfe_filter->sf_filter.sf_handle);
386 FREE(entry->sfe_filter, M_IFADDR);
390 socket_unlock(entry->sfe_socket, 1);
392 FREE(entry, M_IFADDR);
486 /* Look for an existing entry */
494 /* Add the entry only if there was no existing entry */
521 /* Find the entry and remove it from the global and protosw lists */