Skip to content

Commit

Permalink
Extend IR proto and translation to support parsers.
Browse files Browse the repository at this point in the history
  • Loading branch information
kishanps authored and VSuryaprasad-HCL committed Nov 27, 2024
1 parent 22ac77e commit 72f5c3b
Show file tree
Hide file tree
Showing 16 changed files with 1,150 additions and 29 deletions.
24 changes: 22 additions & 2 deletions p4_symbolic/ir/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ cc_library(
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/strings:str_format",
],
)

Expand Down Expand Up @@ -211,10 +211,30 @@ ir_parsing_test(
p4_program = "//p4_symbolic/testdata:parser/sai_parser.p4",
)

ir_parsing_test(
name = "extract_parser_operation_test",
golden_file = "expected/extract_parser_operation.txt",
p4_deps = ["//p4_symbolic/testdata:common/headers.p4"],
p4_program = "//p4_symbolic/testdata:parser/extract_parser_operation.p4",
)

ir_parsing_test(
name = "set_parser_operation_test",
golden_file = "expected/set_parser_operation.txt",
p4_deps = ["//p4_symbolic/testdata:common/headers.p4"],
p4_program = "//p4_symbolic/testdata:parser/set_parser_operation.p4",
)

ir_parsing_test(
name = "default_transition_test",
golden_file = "expected/default_transition.txt",
p4_deps = ["//p4_symbolic/testdata:common/headers.p4"],
p4_program = "//p4_symbolic/testdata:parser/default_transition.p4",
)

ir_parsing_test(
name = "hex_string_transition_test",
golden_file = "expected/hex_string_transition.txt",
p4_deps = ["//p4_symbolic/testdata:common/headers.p4"],
p4_program = "//p4_symbolic/testdata:parser/hex_string_transition.p4",
)

55 changes: 55 additions & 0 deletions p4_symbolic/ir/expected/basic.txt
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,61 @@ pipeline {
initial_control: "node_2"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "parse_ipv4"
value {
name: "parse_ipv4"
parser_ops {
extract {
header {
header_name: "ipv4"
}
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
parse_states {
key: "start"
value {
name: "start"
parser_ops {
extract {
header {
header_name: "ethernet"
}
}
}
transition_key_fields {
field {
header_name: "ethernet"
field_name: "etherType"
}
}
transitions {
hex_string_transition {
value: "0x0800"
next_state: "parse_ipv4"
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

=====MyIngress.ipv4_lpm Entries=====

Expand Down
25 changes: 25 additions & 0 deletions p4_symbolic/ir/expected/complex_conditional.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2071,4 +2071,29 @@ pipeline {
initial_control: "node_2"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "start"
value {
name: "start"
parser_ops {
extract {
header {
header_name: "h1"
}
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

25 changes: 25 additions & 0 deletions p4_symbolic/ir/expected/conditional.txt
Original file line number Diff line number Diff line change
Expand Up @@ -703,4 +703,29 @@ pipeline {
initial_control: "node_2"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "start"
value {
name: "start"
parser_ops {
extract {
header {
header_name: "ethernet"
}
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

25 changes: 25 additions & 0 deletions p4_symbolic/ir/expected/conditional_sequence.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2340,4 +2340,29 @@ pipeline {
initial_control: "node_2"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "start"
value {
name: "start"
parser_ops {
extract {
header {
header_name: "h1"
}
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

18 changes: 18 additions & 0 deletions p4_symbolic/ir/expected/hardcoded.txt
Original file line number Diff line number Diff line change
Expand Up @@ -279,4 +279,22 @@ pipeline {
initial_control: "node_2"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "start"
value {
name: "start"
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

62 changes: 62 additions & 0 deletions p4_symbolic/ir/expected/hex_string_transition.txt
Original file line number Diff line number Diff line change
Expand Up @@ -284,4 +284,66 @@ pipeline {
initial_control: "__END_OF_PIPELINE__"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "parse_ipv4"
value {
name: "parse_ipv4"
parser_ops {
extract {
header {
header_name: "ipv4"
}
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
parse_states {
key: "start"
value {
name: "start"
parser_ops {
extract {
header {
header_name: "ethernet"
}
}
}
transition_key_fields {
field {
header_name: "ethernet"
field_name: "ether_type"
}
}
transitions {
hex_string_transition {
value: "0x0000"
mask: "0xfe00"
next_state: "__END_OF_PARSER__"
}
}
transitions {
hex_string_transition {
value: "0x0800"
next_state: "parse_ipv4"
}
}
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

18 changes: 18 additions & 0 deletions p4_symbolic/ir/expected/reflector.txt
Original file line number Diff line number Diff line change
Expand Up @@ -198,4 +198,22 @@ pipeline {
initial_control: "tbl_reflector54"
}
}
parsers {
key: "parser"
value {
name: "parser"
initial_state: "start"
parse_states {
key: "start"
value {
name: "start"
transitions {
default_transition {
next_state: "__END_OF_PARSER__"
}
}
}
}
}
}

Loading

0 comments on commit 72f5c3b

Please sign in to comment.