aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/buffer.h
diff options
context:
space:
mode:
authorKlement Sekera <ksekera@cisco.com>2019-06-25 11:19:22 +0000
committerOle Trøan <otroan@employees.org>2019-09-26 14:12:07 +0000
commitde34c35fc73226943538149fae9dbc5cfbdc6e75 (patch)
treeab354210305403bc29a3effc7c002f947422cb9f /src/vnet/buffer.h
parent33538a15087eea7c994b6f3d8a952c4b6ea98ee4 (diff)
ip: add shallow virtual reassembly functionality
Type: feature Change-Id: Ibc8334e26c7e6f6120696c3e313b6e11d73dab99 Signed-off-by: Klement Sekera <ksekera@cisco.com>
Diffstat (limited to 'src/vnet/buffer.h')
-rw-r--r--src/vnet/buffer.h39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/vnet/buffer.h b/src/vnet/buffer.h
index 5a3bc3fc279..708e399047d 100644
--- a/src/vnet/buffer.h
+++ b/src/vnet/buffer.h
@@ -185,13 +185,40 @@ typedef struct
/* reassembly */
union
{
- /* in/out variables */
+ /* group input/handoff as handoff is done before input is consumed,
+ * this way we can handoff while keeping input variables intact */
struct
{
- u32 next_index; /* index of next node - used by custom apps */
- u32 error_next_index; /* index of next node if error - used by custom apps */
- u16 estimated_mtu; /* estimated MTU calculated during reassembly */
- u16 owner_thread_index;
+ /* input variables */
+ struct
+ {
+ u32 next_index; /* index of next node - used by custom apps */
+ u32 error_next_index; /* index of next node if error - used by custom apps */
+ };
+ /* handoff variables */
+ struct
+ {
+ u16 owner_thread_index;
+ };
+ };
+ /* output variables */
+ struct
+ {
+ union
+ {
+ /* shallow virtual reassembly output variables */
+ struct
+ {
+ u8 ip_proto; /* protocol in ip header */
+ u16 l4_src_port; /* tcp/udp/icmp src port */
+ u16 l4_dst_port; /* tcp/udp/icmp dst port */
+ };
+ /* full reassembly output variables */
+ struct
+ {
+ u16 estimated_mtu; /* estimated MTU calculated during reassembly */
+ };
+ };
};
/* internal variables used during reassembly */
struct
@@ -202,11 +229,9 @@ typedef struct
u16 range_last;
u32 next_range_bi;
u16 ip6_frag_hdr_offset;
- u16 owner_feature_thread_index;
};
} reass;
};
-
} ip;
/*