Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/in_var.h
Show First 20 Lines • Show All 355 Lines • ▼ Show 20 Lines | |||||
static __inline void | static __inline void | ||||
inm_acquire(struct in_multi *inm) | inm_acquire(struct in_multi *inm) | ||||
{ | { | ||||
IN_MULTI_LIST_LOCK(); | IN_MULTI_LIST_LOCK(); | ||||
inm_acquire_locked(inm); | inm_acquire_locked(inm); | ||||
IN_MULTI_LIST_UNLOCK(); | IN_MULTI_LIST_UNLOCK(); | ||||
} | } | ||||
extern void kdb_backtrace(void); | |||||
static __inline void | static __inline void | ||||
inm_rele_locked(struct in_multi_head *inmh, struct in_multi *inm) | inm_rele_locked(struct in_multi_head *inmh, struct in_multi *inm) | ||||
{ | { | ||||
MPASS(inm->inm_refcount > 0); | MPASS(inm->inm_refcount > 0); | ||||
IN_MULTI_LIST_LOCK_ASSERT(); | IN_MULTI_LIST_LOCK_ASSERT(); | ||||
MCDPRINTF("inm: %p refcount: %d\n", inm, inm->inm_refcount); | |||||
if (--inm->inm_refcount == 0) { | if (--inm->inm_refcount == 0) { | ||||
MCDPRINTF("freeing %p \n", inm); | |||||
MPASS(inmh != NULL); | MPASS(inmh != NULL); | ||||
inm_disconnect(inm); | inm_disconnect(inm); | ||||
inm->inm_ifma->ifma_protospec = NULL; | MPASS(inm->inm_ifma->ifma_protospec == NULL); | ||||
SLIST_INSERT_HEAD(inmh, inm, inm_nrele); | SLIST_INSERT_HEAD(inmh, inm, inm_nrele); | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
* Return values for imo_multi_filter(). | * Return values for imo_multi_filter(). | ||||
*/ | */ | ||||
#define MCAST_PASS 0 /* Pass */ | #define MCAST_PASS 0 /* Pass */ | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |