@@ -67,6 +67,7 @@ IBV_FLOW_SPEC_IPV4_EXT = 0x32, /*
Extended flow specification
IBV_FLOW_SPEC_TCP = 0x40, /* Flow
specification of TCP header */
IBV_FLOW_SPEC_UDP = 0x41, /* Flow
specification of UDP header */
IBV_FLOW_SPEC_VXLAN_TUNNEL = 0x50, /* Flow
specification of VXLAN header */
+IBV_FLOW_SPEC_GRE = 0x51, /* Flow
specification of GRE header */
IBV_FLOW_SPEC_INNER = 0x100, /* Flag
making L2/L3/L4 specifications to be applied on the inner header */
IBV_FLOW_SPEC_ACTION_TAG = 0x1000, /* Action tagging
matched packet */
IBV_FLOW_SPEC_ACTION_DROP = 0x1001, /* Action dropping
matched packet */
@@ -1373,6 +1373,7 @@ enum ibv_flow_spec_type {
IBV_FLOW_SPEC_TCP = 0x40,
IBV_FLOW_SPEC_UDP = 0x41,
IBV_FLOW_SPEC_VXLAN_TUNNEL = 0x50,
+ IBV_FLOW_SPEC_GRE = 0x51,
IBV_FLOW_SPEC_INNER = 0x100,
IBV_FLOW_SPEC_ACTION_TAG = 0x1000,
IBV_FLOW_SPEC_ACTION_DROP = 0x1001,
@@ -1451,6 +1452,20 @@ struct ibv_flow_spec_tcp_udp {
struct ibv_flow_tcp_udp_filter mask;
};
+struct ibv_flow_gre_filter {
+ uint16_t c_ks_res0_ver;
+ uint16_t protocol;
+ uint32_t key;
+};
+
+struct ibv_flow_spec_gre {
+ enum ibv_flow_spec_type type;
+ uint16_t size;
+ struct ibv_flow_gre_filter val;
+ struct ibv_flow_gre_filter mask;
+};
+
struct ibv_flow_tunnel_filter {
uint32_t tunnel_id;
};
@@ -1485,6 +1500,7 @@ struct ibv_flow_spec {