DPDK 26.03.0-rc1
examples/flow_filtering/snippets/snippet_match_nsh.c
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) 2022 NVIDIA Corporation & Affiliates
*/
#include <stdlib.h>
#include <rte_flow.h>
#include "../common.h"
#include "../jump_flow.h"
#include "snippet_match_nsh.h"
static void
snippet_init_nsh(void)
{
flow_attr.transfer = 1;
flow_attr.group = 1;
flow_attr.priority = 0;
}
static void
snippet_match_nsh_create_actions(uint16_t port_id, struct rte_flow_action *action)
{
/* jump to group 1 */
struct rte_flow_error error;
create_jump_flow(port_id, 1, &error);
struct rte_flow_action_port_id *portid = calloc(1, sizeof(struct rte_flow_action_port_id));
if (portid == NULL)
fprintf(stderr, "Failed to allocate memory for port_id\n");
/* To match on NSH to port_id 1. */
portid->id = 1;
action[0].conf = portid;
}
static void
snippet_match_nsh_create_patterns(struct rte_flow_item *pattern)
{
struct rte_flow_item_udp *spec;
struct rte_flow_item_udp *mask;
spec = calloc(1, sizeof(struct rte_flow_item_udp));
if (spec == NULL)
fprintf(stderr, "Failed to allocate memory for spec\n");
mask = calloc(1, sizeof(struct rte_flow_item_udp));
if (mask == NULL)
fprintf(stderr, "Failed to allocate memory for mask\n");
/* Set the patterns. */
spec->hdr.dst_port = RTE_BE16(250);
mask->hdr.dst_port = RTE_BE16(0xffff);
pattern[2].spec = spec;
pattern[2].mask = mask;
}
static struct rte_flow_template_table *
snippet_nsh_flow_create_table(__rte_unused uint16_t port_id,
{
return NULL;
}
#define __rte_unused
Definition: rte_common.h:248
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:2597
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:2717
@ RTE_FLOW_ITEM_TYPE_VXLAN_GPE
Definition: rte_flow.h:365
@ RTE_FLOW_ITEM_TYPE_END
Definition: rte_flow.h:162
@ RTE_FLOW_ITEM_TYPE_ETH
Definition: rte_flow.h:218
@ RTE_FLOW_ITEM_TYPE_UDP
Definition: rte_flow.h:253
@ RTE_FLOW_ITEM_TYPE_IPV6
Definition: rte_flow.h:239
@ RTE_FLOW_ITEM_TYPE_NSH
Definition: rte_flow.h:495
const void * conf
Definition: rte_flow.h:4292
enum rte_flow_action_type type
Definition: rte_flow.h:4291
struct rte_udp_hdr hdr
Definition: rte_flow.h:1051
const void * spec
Definition: rte_flow.h:2129
const void * mask
Definition: rte_flow.h:2131
enum rte_flow_item_type type
Definition: rte_flow.h:2128
rte_be16_t dst_port
Definition: rte_udp.h:26