freebsd-nq/sys/netpfil/ipfw
Alexander V. Chernikov 9f7d47b025 Add API to ease adding new algorithms/new tabletypes to ipfw.
Kernel-side changelog:
* Split general tables code and algorithm-specific table data.
  Current algorithms (IPv4/IPv6 radix and interface tables radix) moved to
  new ip_fw_table_algo.c file.
  Tables code now supports any algorithm implementing the following callbacks:
+struct table_algo {
+       char            name[64];
+       int             idx;
+       ta_init         *init;
+       ta_destroy      *destroy;
+       table_lookup_t  *lookup;
+       ta_prepare_add  *prepare_add;
+       ta_prepare_del  *prepare_del;
+       ta_add          *add;
+       ta_del          *del;
+       ta_flush_entry  *flush_entry;
+       ta_foreach      *foreach;
+       ta_dump_entry   *dump_entry;
+       ta_dump_xentry  *dump_xentry;
+};

* Change ->state, ->xstate, ->tabletype fields of ip_fw_chain to
   ->tablestate pointer (array of 32 bytes structures necessary for
   runtime lookups (can be probably shrinked to 16 bytes later):

   +struct table_info {
   +       table_lookup_t  *lookup;        /* Lookup function */
   +       void            *state;         /* Lookup radix/other structure */
   +       void            *xstate;        /* eXtended state */
   +       u_long          data;           /* Hints for given func */
   +};

* Add count method for namedobj instance to ease size calculations
* Bump ip_fw3 buffer in ipfw_clt 128->256 bytes.
* Improve bitmask resizing on tables_max change.
* Remove table numbers checking from most places.
* Fix wrong nesting in ipfw_rewrite_table_uidx().

* Add IP_FW_OBJ_LIST opcode (list all objects of given type, currently
    implemented for IPFW_OBJTYPE_TABLE).
* Add IP_FW_OBJ_LISTSIZE (get buffer size to hold IP_FW_OBJ_LIST data,
    currenly implemented for IPFW_OBJTYPE_TABLE).
* Add IP_FW_OBJ_INFO (requests info for one object of given type).

Some name changes:
s/ipfw_xtable_tlv/ipfw_obj_tlv/ (no table specifics)
s/ipfw_xtable_ntlv/ipfw_obj_ntlv/ (no table specifics)

Userland changes:
* Add do_set3() cmd to ipfw2 to ease dealing with op3-embeded opcodes.
* Add/improve support for destroy/info cmds.
2014-06-14 10:58:39 +00:00
..
test
dn_heap.c
dn_heap.h
dn_sched_fifo.c
dn_sched_prio.c
dn_sched_qfq.c
dn_sched_rr.c
dn_sched_wf2q.c
dn_sched.h add a counter on the struct mq (a queue of mbufs), 2013-11-22 05:02:37 +00:00
dummynet.txt Summary: Two quick edits to the implementation notes as they're no 2014-02-15 18:36:31 +00:00
ip_dn_glue.c DNOLD_IS_ECN introduced by r266941 is not required. 2014-06-01 20:19:17 +00:00
ip_dn_io.c ECN marking implenetation for dummynet. 2014-06-01 07:28:24 +00:00
ip_dn_private.h add a counter on the struct mq (a queue of mbufs), 2013-11-22 05:02:37 +00:00
ip_dummynet.c ECN marking implenetation for dummynet. 2014-06-01 07:28:24 +00:00
ip_fw2.c Add API to ease adding new algorithms/new tabletypes to ipfw. 2014-06-14 10:58:39 +00:00
ip_fw_dynamic.c Under sys/netpfil/ipfw, surround two IPv6-specific static functions with 2014-02-15 12:25:01 +00:00
ip_fw_log.c make this code compile in userspace on OSX 2013-11-22 05:00:18 +00:00
ip_fw_nat.c Since ipfw nat configures all options in one step, we should set all bits 2014-05-18 14:25:19 +00:00
ip_fw_pfil.c Set oif only for outgoing packets. 2014-04-16 14:37:11 +00:00
ip_fw_private.h Add API to ease adding new algorithms/new tabletypes to ipfw. 2014-06-14 10:58:39 +00:00
ip_fw_sockopt.c Add API to ease adding new algorithms/new tabletypes to ipfw. 2014-06-14 10:58:39 +00:00
ip_fw_table_algo.c Add API to ease adding new algorithms/new tabletypes to ipfw. 2014-06-14 10:58:39 +00:00
ip_fw_table.c Add API to ease adding new algorithms/new tabletypes to ipfw. 2014-06-14 10:58:39 +00:00