Skip to content

Commit

Permalink
tc struct fields addition
Browse files Browse the repository at this point in the history
* Addition of fields in table key value structure

* Updated testcase outputs
  • Loading branch information
Sosutha committed Mar 11, 2024
1 parent d56f93b commit d333533
Show file tree
Hide file tree
Showing 29 changed files with 183 additions and 0 deletions.
12 changes: 12 additions & 0 deletions backends/tc/ebpfCodeGen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -826,6 +826,18 @@ void EBPFTablePNA::emitValueStructStructure(EBPF::CodeBuilder *builder) {
builder->append("unsigned int action;");
builder->newline();

builder->emitIndent();
builder->append("u32 hit:1,");
builder->newline();

builder->emitIndent();
builder->append(" is_default_miss_act:1,");
builder->newline();

builder->emitIndent();
builder->append(" is_default_hit_act:1;");
builder->newline();

if (isTernaryTable()) {
builder->emitIndent();
builder->append("__u32 priority;");
Expand Down
3 changes: 3 additions & 0 deletions backends/tc/runtime/pna.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ struct p4tc_table_entry_act_bpf_params__local {

struct __attribute__((__packed__)) p4tc_table_entry_act_bpf {
u32 act_id;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
u8 params[124];
};

Expand Down
3 changes: 3 additions & 0 deletions testdata/p4tc_samples_outputs/calculator_control_blocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ struct __attribute__((__packed__)) MainControlImpl_calculate_key {
#define MAINCONTROLIMPL_CALCULATE_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_calculate_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
3 changes: 3 additions & 0 deletions testdata/p4tc_samples_outputs/checksum_control_blocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) ingress_nh_table_key {
#define INGRESS_NH_TABLE_ACT_NOACTION 0
struct __attribute__((__packed__)) ingress_nh_table_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) MainControlImpl_t_range_key {
#define MAINCONTROLIMPL_T_RANGE_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_t_range_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_key {
#define MAINCONTROLIMPL_IPV4_TBL_1_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -38,6 +41,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_key {
#define MAINCONTROLIMPL_IPV4_TBL_2_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_key {
#define MAINCONTROLIMPL_IPV4_TBL_1_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -37,6 +40,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_key {
#define MAINCONTROLIMPL_IPV4_TBL_2_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_key {
#define MAINCONTROLIMPL_IPV4_TBL_1_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -38,6 +41,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_key {
#define MAINCONTROLIMPL_IPV4_TBL_2_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ struct MainControlImpl_set_ct_options_key_mask {
#define MAINCONTROLIMPL_SET_CT_OPTIONS_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_set_ct_options_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
__u32 priority;
union {
struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_key {
#define MAINCONTROLIMPL_IPV4_TBL_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) ingress_nh_table2_key {
#define INGRESS_NH_TABLE2_ACT_NOACTION 0
struct __attribute__((__packed__)) ingress_nh_table2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -36,6 +39,9 @@ struct __attribute__((__packed__)) ingress_nh_table_key {
#define INGRESS_NH_TABLE_ACT_NOACTION 0
struct __attribute__((__packed__)) ingress_nh_table_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) ingress_nh_table2_key {
#define INGRESS_NH_TABLE2_ACT_NOACTION 0
struct __attribute__((__packed__)) ingress_nh_table2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -37,6 +40,9 @@ struct __attribute__((__packed__)) ingress_nh_table_key {
#define INGRESS_NH_TABLE_ACT_NOACTION 0
struct __attribute__((__packed__)) ingress_nh_table_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
3 changes: 3 additions & 0 deletions testdata/p4tc_samples_outputs/ipip_control_blocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ struct __attribute__((__packed__)) Main_fwd_table_key {
#define MAIN_FWD_TABLE_ACT_NOACTION 0
struct __attribute__((__packed__)) Main_fwd_table_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
12 changes: 12 additions & 0 deletions testdata/p4tc_samples_outputs/matchtype_control_blocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_key {
#define MAINCONTROLIMPL_IPV4_TBL_1_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -41,6 +44,9 @@ struct MainControlImpl_ipv4_tbl_2_key_mask {
#define MAINCONTROLIMPL_IPV4_TBL_2_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
__u32 priority;
union {
struct {
Expand All @@ -62,6 +68,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_3_key {
#define MAINCONTROLIMPL_IPV4_TBL_3_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_3_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -84,6 +93,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_4_key {
#define MAINCONTROLIMPL_IPV4_TBL_4_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_4_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_key {
#define MAINCONTROLIMPL_IPV4_TBL_1_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -41,6 +44,9 @@ struct MainControlImpl_ipv4_tbl_2_key_mask {
#define MAINCONTROLIMPL_IPV4_TBL_2_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
__u32 priority;
union {
struct {
Expand All @@ -67,6 +73,9 @@ struct MainControlImpl_ipv4_tbl_3_key_mask {
#define MAINCONTROLIMPL_IPV4_TBL_3_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_3_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
__u32 priority;
union {
struct {
Expand All @@ -90,6 +99,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_4_key {
#define MAINCONTROLIMPL_IPV4_TBL_4_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_4_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_key {
#define MAINCONTROLIMPL_IPV4_TBL_1_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_1_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -37,6 +40,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_key {
#define MAINCONTROLIMPL_IPV4_TBL_2_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_2_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -59,6 +65,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_3_key {
#define MAINCONTROLIMPL_IPV4_TBL_3_ACT__NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_3_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -81,6 +90,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_4_key {
#define MAINCONTROLIMPL_IPV4_TBL_4_ACT__NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_4_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -99,6 +111,9 @@ struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_5_key {
#define MAINCONTROLIMPL_IPV4_TBL_5_ACT__NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_ipv4_tbl_5_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand All @@ -122,6 +137,9 @@ struct __attribute__((__packed__)) MainControlImpl_set_all_options_key {
#define MAINCONTROLIMPL_SET_ALL_OPTIONS_ACT__NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_set_all_options_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
union {
struct {
} _NoAction;
Expand Down Expand Up @@ -158,6 +176,9 @@ struct MainControlImpl_set_ct_options_key_mask {
#define MAINCONTROLIMPL_SET_CT_OPTIONS_ACT_NOACTION 0
struct __attribute__((__packed__)) MainControlImpl_set_ct_options_value {
unsigned int action;
u32 hit:1,
is_default_miss_act:1,
is_default_hit_act:1;
__u32 priority;
union {
struct {
Expand Down
Loading

0 comments on commit d333533

Please sign in to comment.