net/ice/base: add GTP filtering via advanced switch filter
Add support to enable GTP filtering using advanced switch filter mechanism. Example of GTP filter criteria: Outer UDP + GTP (Optional) + Inner IPv4[6] + Inner TCP/UDP Signed-off-by: Kiran Patil <kiran.patil@intel.com> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
This commit is contained in:
parent
3c66b6c531
commit
bd4d9a89db
@ -516,6 +516,7 @@ struct ice_pkg_enum {
|
||||
enum ice_tunnel_type {
|
||||
TNL_VXLAN = 0,
|
||||
TNL_GENEVE,
|
||||
TNL_GTP,
|
||||
TNL_LAST = 0xFF,
|
||||
TNL_ALL = 0xFF,
|
||||
};
|
||||
|
@ -504,6 +504,413 @@ static const u8 dummy_vlan_udp_ipv6_packet[] = {
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
/* Outer IPv4 + Outer UDP + GTP + Inner IPv4 + Inner TCP */
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv4_gtpu_ipv4_tcp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
{ ICE_GTP, 42 },
|
||||
{ ICE_IPV4_IL, 62 },
|
||||
{ ICE_TCP_IL, 82 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv4_gtpu_ipv4_tcp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x58, /* IP 14 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 34 */
|
||||
0x00, 0x44, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x34, /* GTP-U Header 42 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 54 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x28, /* IP 62 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x06, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* TCP 82 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
/* Outer IPv4 + Outer UDP + GTP + Inner IPv4 + Inner UDP */
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv4_gtpu_ipv4_udp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
{ ICE_GTP, 42 },
|
||||
{ ICE_IPV4_IL, 62 },
|
||||
{ ICE_UDP_ILOS, 82 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv4_gtpu_ipv4_udp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x4c, /* IP 14 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 34 */
|
||||
0x00, 0x38, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x28, /* GTP-U Header 42 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 54 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x1c, /* IP 62 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* UDP 82 */
|
||||
0x00, 0x08, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
/* Outer IPv6 + Outer UDP + GTP + Inner IPv4 + Inner TCP */
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv4_gtpu_ipv6_tcp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
{ ICE_GTP, 42 },
|
||||
{ ICE_IPV6_IL, 62 },
|
||||
{ ICE_TCP_IL, 102 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv4_gtpu_ipv6_tcp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x6c, /* IP 14 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 34 */
|
||||
0x00, 0x58, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x48, /* GTP-U Header 42 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 54 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 62 */
|
||||
0x00, 0x14, 0x06, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* TCP 102 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv4_gtpu_ipv6_udp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 34 },
|
||||
{ ICE_GTP, 42 },
|
||||
{ ICE_IPV6_IL, 62 },
|
||||
{ ICE_UDP_ILOS, 102 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv4_gtpu_ipv6_udp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x60, /* IP 14 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 34 */
|
||||
0x00, 0x4c, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x3c, /* GTP-U Header 42 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 54 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 62 */
|
||||
0x00, 0x08, 0x11, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* UDP 102 */
|
||||
0x00, 0x08, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv6_gtpu_ipv4_tcp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV6_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 54 },
|
||||
{ ICE_GTP, 62 },
|
||||
{ ICE_IPV4_IL, 82 },
|
||||
{ ICE_TCP_IL, 102 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv6_gtpu_ipv4_tcp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x86, 0xdd,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 14 */
|
||||
0x00, 0x44, 0x11, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 54 */
|
||||
0x00, 0x44, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x34, /* GTP-U Header 62 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 74 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x28, /* IP 82 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x06, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* TCP 102 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv6_gtpu_ipv4_udp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV6_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 54 },
|
||||
{ ICE_GTP, 62 },
|
||||
{ ICE_IPV4_IL, 82 },
|
||||
{ ICE_UDP_ILOS, 102 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv6_gtpu_ipv4_udp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x86, 0xdd,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 14 */
|
||||
0x00, 0x38, 0x11, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 54 */
|
||||
0x00, 0x38, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x28, /* GTP-U Header 62 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 74 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x45, 0x00, 0x00, 0x1c, /* IP 82 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* UDP 102 */
|
||||
0x00, 0x08, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv6_gtpu_ipv6_tcp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV6_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 54 },
|
||||
{ ICE_GTP, 62 },
|
||||
{ ICE_IPV6_IL, 82 },
|
||||
{ ICE_TCP_IL, 102 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv6_gtpu_ipv6_tcp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x86, 0xdd,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 14 */
|
||||
0x00, 0x58, 0x11, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 54 */
|
||||
0x00, 0x58, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x48, /* GTP-U Header 62 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 74 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 82 */
|
||||
0x00, 0x14, 0x06, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* TCP 122 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_ipv6_gtpu_ipv6_udp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV6_OFOS, 14 },
|
||||
{ ICE_UDP_OF, 54 },
|
||||
{ ICE_GTP, 62 },
|
||||
{ ICE_IPV6_IL, 82 },
|
||||
{ ICE_UDP_ILOS, 102 },
|
||||
{ ICE_PROTOCOL_LAST, 0 },
|
||||
};
|
||||
|
||||
static const u8 dummy_ipv6_gtpu_ipv6_udp_packet[] = {
|
||||
0x00, 0x00, 0x00, 0x00, /* Ethernet 0 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x86, 0xdd,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 14 */
|
||||
0x00, 0x4c, 0x11, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x08, 0x68, /* UDP 54 */
|
||||
0x00, 0x4c, 0x00, 0x00,
|
||||
|
||||
0x34, 0xff, 0x00, 0x3c, /* GTP-U Header 62 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x85,
|
||||
|
||||
0x02, 0x00, 0x00, 0x00, /* GTP_PDUSession_ExtensionHeader 74 */
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x60, 0x00, 0x00, 0x00, /* IPv6 82 */
|
||||
0x00, 0x08, 0x11, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, /* UDP 122 */
|
||||
0x00, 0x08, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, /* 2 bytes for 4 byte alignment */
|
||||
};
|
||||
|
||||
static const struct ice_dummy_pkt_offsets dummy_udp_gtp_packet_offsets[] = {
|
||||
{ ICE_MAC_OFOS, 0 },
|
||||
{ ICE_IPV4_OFOS, 14 },
|
||||
|
Loading…
x
Reference in New Issue
Block a user