diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/net/pfil.c | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/sys/net/pfil.c b/sys/net/pfil.c index 78c3ca9..a11950f 100644 --- a/sys/net/pfil.c +++ b/sys/net/pfil.c @@ -86,14 +86,13 @@ pfil_run_hooks(struct pfil_head *ph, struct mbuf **mp, struct ifnet *ifp, } } PFIL_RUNLOCK(ph, &rmpt); - *mp = m; return (rv); } /* - * pfil_head_register() registers a pfil_head with the packet filter - * hook mechanism. + * pfil_head_register() registers a pfil_head with the packet filter hook + * mechanism. */ int pfil_head_register(struct pfil_head *ph) @@ -105,7 +104,7 @@ pfil_head_register(struct pfil_head *ph) if (ph->ph_type == lph->ph_type && ph->ph_un.phu_val == lph->ph_un.phu_val) { PFIL_LIST_UNLOCK(); - return EEXIST; + return (EEXIST); } } PFIL_LOCK_INIT(ph); @@ -151,7 +150,6 @@ pfil_head_get(int type, u_long val) if (ph->ph_type == type && ph->ph_un.phu_val == val) break; PFIL_LIST_UNLOCK(); - return (ph); } @@ -208,7 +206,7 @@ pfil_add_hook(int (*func)(void *, struct mbuf **, struct ifnet *, int, ph->ph_nhooks++; } PFIL_WUNLOCK(ph); - return 0; + return (0); locked_error: PFIL_WUNLOCK(ph); error: @@ -216,12 +214,12 @@ error: free(pfh1, M_IFADDR); if (pfh2 != NULL) free(pfh2, M_IFADDR); - return err; + return (err); } /* - * pfil_remove_hook removes a specific function from the packet filter - * hook list. + * pfil_remove_hook removes a specific function from the packet filter hook + * list. */ int pfil_remove_hook(int (*func)(void *, struct mbuf **, struct ifnet *, int, @@ -230,7 +228,6 @@ pfil_remove_hook(int (*func)(void *, struct mbuf **, struct ifnet *, int, int err = 0; PFIL_WLOCK(ph); - if (flags & PFIL_IN) { err = pfil_list_remove(&ph->ph_in, func, arg); if (err == 0) @@ -242,8 +239,7 @@ pfil_remove_hook(int (*func)(void *, struct mbuf **, struct ifnet *, int, ph->ph_nhooks--; } PFIL_WUNLOCK(ph); - - return err; + return (err); } static int @@ -257,17 +253,17 @@ pfil_list_add(pfil_list_t *list, struct packet_filter_hook *pfh1, int flags) TAILQ_FOREACH(pfh, list, pfil_link) if (pfh->pfil_func == pfh1->pfil_func && pfh->pfil_arg == pfh1->pfil_arg) - return EEXIST; + return (EEXIST); + /* - * insert the input list in reverse order of the output list - * so that the same path is followed in or out of the kernel. + * Insert the input list in reverse order of the output list so that + * the same path is followed in or out of the kernel. */ if (flags & PFIL_IN) TAILQ_INSERT_HEAD(list, pfh1, pfil_link); else TAILQ_INSERT_TAIL(list, pfh1, pfil_link); - - return 0; + return (0); } /* @@ -285,30 +281,32 @@ pfil_list_remove(pfil_list_t *list, if (pfh->pfil_func == func && pfh->pfil_arg == arg) { TAILQ_REMOVE(list, pfh, pfil_link); free(pfh, M_IFADDR); - return 0; + return (0); } - return ENOENT; + return (ENOENT); } -/**************** - * Stuff that must be initialized for every instance - * (including the first of course). +/* + * Stuff that must be initialized for every instance (including the first of + * course). */ static int vnet_pfil_init(const void *unused) { + LIST_INIT(&V_pfil_head_list); return (0); } -/*********************** +/* * Called for the removal of each instance. */ static int vnet_pfil_uninit(const void *unused) { + /* XXX should panic if list is not empty */ - return 0; + return (0); } /* Define startup order. */ @@ -317,17 +315,17 @@ vnet_pfil_uninit(const void *unused) #define PFIL_VNET_ORDER (PFIL_MODEVENT_ORDER + 2) /* Later still. */ /* - * Starting up. + * Starting up. + * * VNET_SYSINIT is called for each existing vnet and each new vnet. */ VNET_SYSINIT(vnet_pfil_init, PFIL_SYSINIT_ORDER, PFIL_VNET_ORDER, - vnet_pfil_init, NULL); + vnet_pfil_init, NULL); /* - * Closing up shop. These are done in REVERSE ORDER, - * Not called on reboot. + * Closing up shop. These are done in REVERSE ORDER. Not called on reboot. + * * VNET_SYSUNINIT is called for each exiting vnet as it exits. */ VNET_SYSUNINIT(vnet_pfil_uninit, PFIL_SYSINIT_ORDER, PFIL_VNET_ORDER, - vnet_pfil_uninit, NULL); - + vnet_pfil_uninit, NULL); |