diff options
author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-07-28 19:01:25 +0000 |
---|---|---|
committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-07-28 19:01:25 +0000 |
commit | 68394ec88e70e77244f752290e856ea2b1f8348d (patch) | |
tree | fb3bd0df0e64c28992f517fedc78a93ce0002cca /sys/modules/ipfw | |
parent | db785d319954371674fbb18f6cbc46d9c8bb0c63 (diff) | |
download | src-68394ec88e70e77244f752290e856ea2b1f8348d.tar.gz src-68394ec88e70e77244f752290e856ea2b1f8348d.zip |
* Add generic ipfw interface tracking API
* Rewrite interface tables to use interface indexes
Kernel changes:
* Add generic interface tracking API:
- ipfw_iface_ref (must call unlocked, performs lazy init if needed, allocates
state & bumps ref)
- ipfw_iface_add_ntfy(UH_WLOCK+WLOCK, links comsumer & runs its callback to
update ifindex)
- ipfw_iface_del_ntfy(UH_WLOCK+WLOCK, unlinks consumer)
- ipfw_iface_unref(unlocked, drops reference)
Additionally, consumer callbacks are called in interface withdrawal/departure.
* Rewrite interface tables to use iface tracking API. Currently tables are
implemented the following way:
runtime data is stored as sorted array of {ifidx, val} for existing interfaces
full data is stored inside namedobj instance (chained hashed table).
* Add IP_FW_XIFLIST opcode to dump status of tracked interfaces
* Pass @chain ptr to most non-locked algorithm callbacks:
(prepare_add, prepare_del, flush_entry ..). This may be needed for better
interaction of given algorithm an other ipfw subsystems
* Add optional "change_ti" algorithm handler to permit updating of
cached table_info pointer (happens in case of table_max resize)
* Fix small bug in ipfw_list_tables()
* Add badd (insert into sorted array) and bdel (remove from sorted array) funcs
Userland changes:
* Add "iflist" cmd to print status of currently tracked interface
* Add stringnum_cmp for better interface/table names sorting
Notes
Notes:
svn path=/projects/ipfw/; revision=269195
Diffstat (limited to 'sys/modules/ipfw')
-rw-r--r-- | sys/modules/ipfw/Makefile | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/modules/ipfw/Makefile b/sys/modules/ipfw/Makefile index 10d36a97df3f..9a90c4a25dbf 100644 --- a/sys/modules/ipfw/Makefile +++ b/sys/modules/ipfw/Makefile @@ -7,7 +7,7 @@ KMOD= ipfw SRCS= ip_fw2.c ip_fw_pfil.c SRCS+= ip_fw_dynamic.c ip_fw_log.c -SRCS+= ip_fw_sockopt.c ip_fw_table.c ip_fw_table_algo.c +SRCS+= ip_fw_sockopt.c ip_fw_table.c ip_fw_table_algo.c ip_fw_iface.c SRCS+= opt_inet.h opt_inet6.h opt_ipdivert.h opt_ipfw.h opt_ipsec.h CFLAGS+= -DIPFIREWALL |