summaryrefslogtreecommitdiffstats
path: root/src/vnet/buffer.h
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2018-11-27 16:52:59 -0500
committerFlorin Coras <florin.coras@gmail.com>2018-11-30 20:18:54 +0000
commit7fff3d205463d5e0a95d6bdd337100988ef323a3 (patch)
tree7743d004b00a2e674e95c4d1593ae94c09b8a8b5 /src/vnet/buffer.h
parent8861c1a1f229b4727fea48bfe5990808bb30f871 (diff)
Metadata / opaque formatting belongs in vpp
VPP graph dispatch trace record description: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Major Version | Minor Version | NStrings | ProtoHint | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Buffer index (big endian) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + VPP graph node name ... ... | NULL octet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Buffer Metadata ... ... | NULL octet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Buffer Opaque ... ... | NULL octet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Buffer Opaque 2 ... ... | NULL octet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | VPP ASCII packet trace (if NStrings > 4) | NULL octet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Packet data (up to 16K) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Graph dispatch records comprise a version stamp, an indication of how many NULL-terminated strings will follow the record header, and a protocol hint. The buffer index allows downstream consumers of these data to easily filter/track single packets as they traverse the forwarding graph. FWIW, the 32-bit buffer index is stored in big endian format. As of this writing, major version = 1, minor version = 0. Nstrings will be either 4 or 5. Here is the current set of protocol hints: typedef enum { VLIB_NODE_PROTO_HINT_NONE = 0, VLIB_NODE_PROTO_HINT_ETHERNET, VLIB_NODE_PROTO_HINT_IP4, VLIB_NODE_PROTO_HINT_IP6, VLIB_NODE_PROTO_HINT_TCP, VLIB_NODE_PROTO_HINT_UDP, VLIB_NODE_N_PROTO_HINTS, } vlib_node_proto_hint_t; Example: VLIB_NODE_PROTO_HINT_IP6 means that the first octet of packet data SHOULD be 0x60, and should begin an ipv6 packet header. Change-Id: Idf310bad80cc0e4207394c80f18db5f77c378741 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vnet/buffer.h')
-rw-r--r--src/vnet/buffer.h44
1 files changed, 22 insertions, 22 deletions
diff --git a/src/vnet/buffer.h b/src/vnet/buffer.h
index 8071081faf7..d701e21141d 100644
--- a/src/vnet/buffer.h
+++ b/src/vnet/buffer.h
@@ -45,40 +45,40 @@
/**
* Flags that are set in the high order bits of ((vlib_buffer*)b)->flags
*/
-#define foreach_vnet_buffer_flag \
- _( 1, L4_CHECKSUM_COMPUTED, "l4-cksum-computed") \
- _( 2, L4_CHECKSUM_CORRECT, "l4-cksum-correct") \
- _( 3, VLAN_2_DEEP, "vlan-2-deep") \
- _( 4, VLAN_1_DEEP, "vlan-1-deep") \
- _( 5, SPAN_CLONE, "span-clone") \
- _( 6, LOOP_COUNTER_VALID, 0) \
- _( 7, LOCALLY_ORIGINATED, "local") \
- _( 8, IS_IP4, "ip4") \
- _( 9, IS_IP6, "ip6") \
- _(10, OFFLOAD_IP_CKSUM, "offload-ip-cksum") \
- _(11, OFFLOAD_TCP_CKSUM, "offload-tcp-cksum") \
- _(12, OFFLOAD_UDP_CKSUM, "offload-udp-cksum") \
- _(13, IS_NATED, "nated") \
- _(14, L2_HDR_OFFSET_VALID, 0) \
- _(15, L3_HDR_OFFSET_VALID, 0) \
- _(16, L4_HDR_OFFSET_VALID, 0) \
- _(17, FLOW_REPORT, "flow-report") \
- _(18, IS_DVR, "dvr") \
- _(19, QOS_DATA_VALID, 0)
+#define foreach_vnet_buffer_flag \
+ _( 1, L4_CHECKSUM_COMPUTED, "l4-cksum-computed", 1) \
+ _( 2, L4_CHECKSUM_CORRECT, "l4-cksum-correct", 1) \
+ _( 3, VLAN_2_DEEP, "vlan-2-deep", 1) \
+ _( 4, VLAN_1_DEEP, "vlan-1-deep", 1) \
+ _( 5, SPAN_CLONE, "span-clone", 1) \
+ _( 6, LOOP_COUNTER_VALID, "loop-counter-valid", 0) \
+ _( 7, LOCALLY_ORIGINATED, "local", 1) \
+ _( 8, IS_IP4, "ip4", 1) \
+ _( 9, IS_IP6, "ip6", 1) \
+ _(10, OFFLOAD_IP_CKSUM, "offload-ip-cksum", 1) \
+ _(11, OFFLOAD_TCP_CKSUM, "offload-tcp-cksum", 1) \
+ _(12, OFFLOAD_UDP_CKSUM, "offload-udp-cksum", 1) \
+ _(13, IS_NATED, "natted", 1) \
+ _(14, L2_HDR_OFFSET_VALID, "l2_hdr_offset_valid", 0) \
+ _(15, L3_HDR_OFFSET_VALID, "l3_hdr_offset_valid", 0) \
+ _(16, L4_HDR_OFFSET_VALID, "l4_hdr_offset_valid", 0) \
+ _(17, FLOW_REPORT, "flow-report", 1) \
+ _(18, IS_DVR, "dvr", 1) \
+ _(19, QOS_DATA_VALID, "qos-data-valid", 0)
#define VNET_BUFFER_FLAGS_VLAN_BITS \
(VNET_BUFFER_F_VLAN_1_DEEP | VNET_BUFFER_F_VLAN_2_DEEP)
enum
{
-#define _(bit, name, v) VNET_BUFFER_F_##name = (1 << LOG2_VLIB_BUFFER_FLAG_USER(bit)),
+#define _(bit, name, s, v) VNET_BUFFER_F_##name = (1 << LOG2_VLIB_BUFFER_FLAG_USER(bit)),
foreach_vnet_buffer_flag
#undef _
};
enum
{
-#define _(bit, name, v) VNET_BUFFER_F_LOG2_##name = LOG2_VLIB_BUFFER_FLAG_USER(bit),
+#define _(bit, name, s, v) VNET_BUFFER_F_LOG2_##name = LOG2_VLIB_BUFFER_FLAG_USER(bit),
foreach_vnet_buffer_flag
#undef _
};