Alexander V. Chernikov 68394ec88e * 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
2014-07-28 19:01:25 +00:00
..
2010-08-23 06:13:29 +00:00
2013-05-20 23:52:49 +00:00
2011-01-06 21:04:00 +00:00
2011-01-06 21:04:00 +00:00
2010-08-23 06:13:29 +00:00
2014-03-14 02:58:48 +00:00
2010-08-23 06:13:29 +00:00
2013-09-03 12:08:08 +00:00
2011-12-30 21:22:10 +00:00
2012-08-15 06:31:32 +00:00
2010-08-23 06:13:29 +00:00
2010-10-13 14:44:38 +00:00
2014-03-27 11:10:13 +00:00
2013-06-04 06:38:01 +00:00
2010-09-16 09:29:48 +00:00
2010-08-23 06:13:29 +00:00
2010-08-23 06:13:29 +00:00
2014-02-03 01:16:32 +00:00
2014-05-20 19:55:06 +00:00
2014-03-14 06:29:43 +00:00
2014-03-14 06:29:43 +00:00
2010-08-23 06:13:29 +00:00
2013-08-03 08:21:35 +00:00
2010-08-23 06:13:29 +00:00
2010-08-23 06:13:29 +00:00
2010-08-23 06:13:29 +00:00
2012-03-30 23:05:48 +00:00
2012-08-15 04:03:55 +00:00
2012-04-21 01:51:16 +00:00
2013-03-03 16:17:09 +00:00
2010-05-19 14:50:07 +00:00
2012-05-01 07:38:40 +00:00
2010-08-23 06:13:29 +00:00
2012-11-08 01:35:02 +00:00
2012-02-11 08:34:33 +00:00
2010-08-23 06:13:29 +00:00
2010-08-23 06:13:29 +00:00
2010-08-15 15:33:01 +00:00
2010-04-26 17:03:56 +00:00
2010-04-20 21:29:53 +00:00
2014-03-14 02:58:48 +00:00
2014-03-14 02:58:48 +00:00
2010-08-23 06:13:29 +00:00
2010-08-23 06:13:29 +00:00
2010-10-13 14:44:38 +00:00
2012-06-25 09:46:06 +00:00
2010-08-13 04:00:35 +00:00
2014-03-14 02:58:48 +00:00
2012-06-03 12:19:16 +00:00
2012-01-17 18:20:34 +00:00