#include <stdlib.h>
#include "../common.h"
#include "../jump_flow.h"
#include "snippet_match_vxlan_gbp.h"
void
snippet_init_vxlan_gbp(void)
{
flow_attr.ingress = 1;
flow_attr.group = 0;
}
void
snippet_match_vxlan_gbp_create_actions(
__rte_unused uint16_t port_id,
{
if (queue == NULL)
fprintf(stderr, "Failed to allocate memory for queue\n");
}
void
snippet_match_vxlan_gbp_create_patterns(
struct rte_flow_item *pattern)
{
if (vxlan_gbp == NULL)
fprintf(stderr, "Failed to allocate memory for vxlan_gbp\n");
if (vxlan_gbp_mask == NULL)
fprintf(stderr, "Failed to allocate memory for vxlan_gbp_mask\n");
uint8_t
vni[] = {0x00, 0x00, 0x00};
uint16_t group_policy_id = 0x200;
memcpy(vxlan_gbp_mask->
hdr.
vni,
"\xff\xff\xff", 3);
vxlan_gbp_mask->hdr.
flags = 0xff;
memcpy(vxlan_gbp->
vni, vni, 3);
vxlan_gbp->hdr.
rsvd0[1] = (group_policy_id >> 8) & 0xff;
vxlan_gbp->hdr.rsvd0[2] = group_policy_id & 0xff;
pattern[3].
spec = vxlan_gbp;
pattern[3].
mask = vxlan_gbp_mask;
}
static struct rte_flow_pattern_template *
snippet_match_vxlan_gbp_create_pattern_template(uint16_t port_id,
{
.hdr.
vni = {0xff, 0xff, 0xff},
.hdr.flags = 0xff,
.hdr.policy_id = 0xffff,
};
pattern[3].
mask = &vxlan_gbp_mask;
.ingress = 1,
};
}
static struct rte_flow_actions_template *
snippet_match_vxlan_gbp_create_actions_template(uint16_t port_id,
{
};
};
action[0].
conf = &queue_v;
masks[0].
conf = &queue_m;
};
}
struct rte_flow_template_table *
snippet_match_vxlan_gbp_create_table(uint16_t port_id,
struct rte_flow_error *error)
{
struct rte_flow_pattern_template *pt;
struct rte_flow_actions_template *at;
.priority = 0,
.ingress = 1,
},
.nb_flows = 1000,
};
pt = snippet_match_vxlan_gbp_create_pattern_template(port_id, error);
if (pt == NULL) {
printf("Failed to create pattern template: %s (%s)\n",
return NULL;
}
at = snippet_match_vxlan_gbp_create_actions_template(port_id, error);
if (at == NULL) {
printf("Failed to create actions template: %s (%s)\n",
return NULL;
}
}