diff options
author | Filip Varga <fivarga@cisco.com> | 2019-09-09 16:55:19 +0200 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2019-11-19 03:42:50 +0000 |
commit | 9a6dc8a9376e7270331255861b3ead1045b40c6d (patch) | |
tree | 8c0f1622a7437b43243c7e782bd3167ee1ac5e25 /src/plugins/nat/nat.h | |
parent | b15ad95124ca97dd9a800394b93f1fe19567d2e1 (diff) |
nat: respect arc features (multi worker)
Type: fix
Ticket: VPP-1747
Change-Id: If282aae3e584d7017c200f897b99c8a37eb1b2e5
Signed-off-by: Filip Varga <fivarga@cisco.com>
Diffstat (limited to 'src/plugins/nat/nat.h')
-rw-r--r-- | src/plugins/nat/nat.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/plugins/nat/nat.h b/src/plugins/nat/nat.h index f7ce5f977d6..b65ad1b676f 100644 --- a/src/plugins/nat/nat.h +++ b/src/plugins/nat/nat.h @@ -43,6 +43,45 @@ /* NAT buffer flags */ #define SNAT_FLAG_HAIRPINNING (1 << 0) +typedef struct +{ + u32 arc_next; +} nat_buffer_opaque_t; + +typedef enum +{ + NAT_NEXT_DROP, + NAT_NEXT_ICMP_ERROR, + NAT_NEXT_IN2OUT_PRE, + NAT_NEXT_OUT2IN_PRE, + NAT_NEXT_IN2OUT_ED_FAST_PATH, + NAT_NEXT_IN2OUT_ED_SLOW_PATH, + NAT_NEXT_IN2OUT_ED_OUTPUT_SLOW_PATH, + NAT_NEXT_IN2OUT_ED_REASS, + NAT_NEXT_IN2OUT_ED_OUTPUT_REASS, + NAT_NEXT_OUT2IN_ED_FAST_PATH, + NAT_NEXT_OUT2IN_ED_SLOW_PATH, + NAT_NEXT_OUT2IN_ED_REASS, + NAT_N_NEXT, +} nat_next_t; + +typedef struct +{ + u32 next_index; +} nat_pre_trace_t; + +#define nat_buffer_opaque(b) \ + ((nat_buffer_opaque_t *)((vnet_buffer_opaque2_t *)b->opaque2)->__unused2) + +/* +STATIC_ASSERT (sizeof (nat_buffer_opaque_t) <= + STRUCT_SIZE_OF (vnet_buffer_opaque_t, unused), + "Custom meta-data too large for vnet_buffer_opaque_t"); + +#define nat_buffer_opaque(b) \ + ((nat_buffer_opaque_t *)((u8 *)((b)->opaque) + \ + STRUCT_OFFSET_OF (vnet_buffer_opaque_t, unused)))*/ + /* session key (4-tuple) */ typedef struct { @@ -575,6 +614,15 @@ typedef struct snat_main_s /* node indexes */ u32 error_node_index; + /* handoff fq nodes */ + u32 handoff_out2in_index; + u32 handoff_in2out_index; + u32 handoff_in2out_output_index; + + /* respect feature arc nodes */ + u32 pre_out2in_node_index; + u32 pre_in2out_node_index; + u32 in2out_node_index; u32 in2out_output_node_index; u32 in2out_fast_node_index; @@ -667,6 +715,12 @@ typedef struct } snat_runtime_t; extern snat_main_t snat_main; + +// nat pre ed next_node feature classification +extern vlib_node_registration_t nat_default_node; +extern vlib_node_registration_t nat_pre_in2out_node; +extern vlib_node_registration_t nat_pre_out2in_node; + extern vlib_node_registration_t snat_in2out_node; extern vlib_node_registration_t snat_in2out_output_node; extern vlib_node_registration_t snat_out2in_node; |