diff options
author | melifaro <melifaro@FreeBSD.org> | 2012-09-04 19:43:26 +0000 |
---|---|---|
committer | melifaro <melifaro@FreeBSD.org> | 2012-09-04 19:43:26 +0000 |
commit | 1fbae66b6e67117d899f9c10f12c000c4584d32c (patch) | |
tree | a8022a21cc0401215271f1f78d4f500650942824 /sys/netinet/ipfw/ip_fw2.c | |
parent | 599115bdcb3939cdc5164a09fd18ccfe4c310ab1 (diff) | |
download | FreeBSD-src-1fbae66b6e67117d899f9c10f12c000c4584d32c.zip FreeBSD-src-1fbae66b6e67117d899f9c10f12c000c4584d32c.tar.gz |
Introduce new link-layer PFIL hook V_link_pfil_hook.
Merge ether_ipfw_chk() and part of bridge_pfil() into
unified ipfw_check_frame() function called by PFIL.
This change was suggested by rwatson? @ DevSummit.
Remove ipfw headers from ether/bridge code since they are unneeded now.
Note this thange introduce some (temporary) performance penalty since
PFIL read lock has to be acquired for every link-level packet.
MFC after: 3 weeks
Diffstat (limited to 'sys/netinet/ipfw/ip_fw2.c')
-rw-r--r-- | sys/netinet/ipfw/ip_fw2.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/netinet/ipfw/ip_fw2.c b/sys/netinet/ipfw/ip_fw2.c index 7559a50..18a9c5a 100644 --- a/sys/netinet/ipfw/ip_fw2.c +++ b/sys/netinet/ipfw/ip_fw2.c @@ -2645,10 +2645,9 @@ vnet_ipfw_init(const void *unused) V_ipfw_vnet_ready = 1; /* Open for business */ /* - * Hook the sockopt handler, and the layer2 (V_ip_fw_chk_ptr) - * and pfil hooks for ipv4 and ipv6. Even if the latter two fail - * we still keep the module alive because the sockopt and - * layer2 paths are still useful. + * Hook the sockopt handler and pfil hooks for ipv4 and ipv6. + * Even if the latter two fail we still keep the module alive + * because the sockopt and layer2 paths are still useful. * ipfw[6]_hook return 0 on success, ENOENT on failure, * so we can ignore the exact return value and just set a flag. * @@ -2659,7 +2658,6 @@ vnet_ipfw_init(const void *unused) * is checked on each packet because there are no pfil hooks. */ V_ip_fw_ctl_ptr = ipfw_ctl; - V_ip_fw_chk_ptr = ipfw_chk; error = ipfw_attach_hooks(1); return (error); } @@ -2681,7 +2679,6 @@ vnet_ipfw_uninit(const void *unused) * sure the update is propagated and nobody will be in. */ (void)ipfw_attach_hooks(0 /* detach */); - V_ip_fw_chk_ptr = NULL; V_ip_fw_ctl_ptr = NULL; IPFW_UH_WLOCK(chain); IPFW_UH_WUNLOCK(chain); |