History

net: psample: Add tunnel support

Currently, psample can only send the packet bits after decapsulation. The tunnel information is lost. Add the tunnel support. If the sampled packet has no tunnel info, the behavior is the same as before. If it has, add a nested metadata field named PSAMPLE_ATTR_TUNNEL and include the tunnel subfields if applicable. Increase the metadata length for sampled packet with the tunnel info. If new subfields of tunnel info should be included, update the metadata length accordingly.

Chris Mi committed 6 years ago

Commit d8bed681 parent de1b99e2 files · +179 −0Browse files

Showing the changes to include/uapi/linux (1 of 2 files). Show all

Unified · Split

include/uapi/linux/psample.h+22−0
@@ -11,6 +11,7 @@ enum { · 10 unmodified lines
1111 PSAMPLE_ATTR_GROUP_SEQ,
1212 PSAMPLE_ATTR_SAMPLE_RATE,
1313 PSAMPLE_ATTR_DATA,
14+ PSAMPLE_ATTR_TUNNEL,
1415
1516 /* commands attributes */
1617 PSAMPLE_ATTR_GROUP_REFCOUNT,
@@ -25,6 +26,27 @@ enum psample_command { · 8 unmodified lines
2526 PSAMPLE_CMD_DEL_GROUP,
2627 };
2728
29+enum psample_tunnel_key_attr {
30+ PSAMPLE_TUNNEL_KEY_ATTR_ID, /* be64 Tunnel ID */
31+ PSAMPLE_TUNNEL_KEY_ATTR_IPV4_SRC, /* be32 src IP address. */
32+ PSAMPLE_TUNNEL_KEY_ATTR_IPV4_DST, /* be32 dst IP address. */
33+ PSAMPLE_TUNNEL_KEY_ATTR_TOS, /* u8 Tunnel IP ToS. */
34+ PSAMPLE_TUNNEL_KEY_ATTR_TTL, /* u8 Tunnel IP TTL. */
35+ PSAMPLE_TUNNEL_KEY_ATTR_DONT_FRAGMENT, /* No argument, set DF. */
36+ PSAMPLE_TUNNEL_KEY_ATTR_CSUM, /* No argument. CSUM packet. */
37+ PSAMPLE_TUNNEL_KEY_ATTR_OAM, /* No argument. OAM frame. */
38+ PSAMPLE_TUNNEL_KEY_ATTR_GENEVE_OPTS, /* Array of Geneve options. */
39+ PSAMPLE_TUNNEL_KEY_ATTR_TP_SRC, /* be16 src Transport Port. */
40+ PSAMPLE_TUNNEL_KEY_ATTR_TP_DST, /* be16 dst Transport Port. */
41+ PSAMPLE_TUNNEL_KEY_ATTR_VXLAN_OPTS, /* Nested VXLAN opts* */
42+ PSAMPLE_TUNNEL_KEY_ATTR_IPV6_SRC, /* struct in6_addr src IPv6 address. */
43+ PSAMPLE_TUNNEL_KEY_ATTR_IPV6_DST, /* struct in6_addr dst IPv6 address. */
44+ PSAMPLE_TUNNEL_KEY_ATTR_PAD,
45+ PSAMPLE_TUNNEL_KEY_ATTR_ERSPAN_OPTS, /* struct erspan_metadata */
46+ PSAMPLE_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE, /* No argument. IPV4_INFO_BRIDGE mode.*/
47+ __PSAMPLE_TUNNEL_KEY_ATTR_MAX
48+};
49+
2850 /* Can be overridden at runtime by module option */
2951 #define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
3052

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t