Sync with the new ipfw3 version.
[ipfw.git] / dummynet2 / include / netinet / ip_fw.h
index 238601f..d037b45 100644 (file)
@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: head/sys/netinet/ip_fw.h 200580 2009-12-15 16:15:14Z luigi $
+ * $FreeBSD: user/luigi/ipfw3-head/sys/netinet/ip_fw.h 202072 2010-01-11 10:12:35Z luigi $
  */
 
 #ifndef _IPFW2_H
@@ -461,7 +461,13 @@ typedef struct _ipfw_insn_icmp6 {
  */
 
 struct ip_fw {
+#ifdef _X64EMU
+               int32_t pad1;
+#endif
        struct ip_fw    *x_next;        /* linked list of rules         */
+#ifdef _X64EMU
+               int32_t pad2;
+#endif
        struct ip_fw    *next_rule;     /* ptr to next [skipto] rule    */
        /* 'next_rule' is used to pass up 'set_disable' status          */
 
@@ -487,24 +493,29 @@ struct ip_fw {
 #define RULESIZE(rule)  (sizeof(struct ip_fw) + \
        ((struct ip_fw *)(rule))->cmd_len * 4 - 4)
 
+#if 1 // should be moved to in.h
 /*
  * This structure is used as a flow mask and a flow id for various
  * parts of the code.
+ * addr_type is used in userland and kernel to mark the address type.
+ * fib is used in the kernel to record the fib in use.
+ * _flags is used in the kernel to store tcp flags for dynamic rules.
  */
 struct ipfw_flow_id {
-       u_int32_t       dst_ip;
-       u_int32_t       src_ip;
-       u_int16_t       dst_port;
-       u_int16_t       src_port;
-       u_int8_t        fib;
-       u_int8_t        proto;
-       u_int8_t        flags;  /* protocol-specific flags */
-       uint8_t         addr_type; /* 4 = ipv4, 6 = ipv6, 1=ether ? */
-       struct in6_addr dst_ip6;        /* could also store MAC addr! */
+       uint32_t        dst_ip;
+       uint32_t        src_ip;
+       uint16_t        dst_port;
+       uint16_t        src_port;
+       uint8_t fib;
+       uint8_t proto;
+       uint8_t         _flags; /* protocol-specific flags */
+       uint8_t         addr_type; /* 4=ip4, 6=ip6, 1=ether ? */
+       struct in6_addr dst_ip6;
        struct in6_addr src_ip6;
-       u_int32_t       flow_id6;
-       u_int32_t       frag_id6;
+       uint32_t        flow_id6;
+       uint32_t        extra; /* queue/pipe or frag_id */
 };
+#endif
 
 #define IS_IP6_FLOW_ID(id)     ((id)->addr_type == 6)