├── .cargo └── config.toml ├── .github ├── buildomat │ ├── config.toml │ └── jobs │ │ └── build-and-test.sh ├── renovate.json └── workflows │ └── rust.yml ├── .gitignore ├── .rustfmt.toml ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── book ├── .gitignore ├── code │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ └── bin │ │ ├── core.p4 │ │ ├── headers.p4 │ │ ├── hello-world.p4 │ │ ├── hello-world.rs │ │ ├── softnpu.p4 │ │ ├── vlan-switch.p4 │ │ └── vlan-switch.rs └── text │ ├── book.toml │ ├── src │ ├── 01-01-installation.md │ ├── 01-02-hello_world.md │ ├── 01-03-compile_and_run.md │ ├── 01-basics.md │ ├── 02-01-vlan-switch.md │ ├── 02-by-example.md │ ├── 03-01-endianness.md │ ├── 03-guidelines.md │ ├── SUMMARY.md │ ├── chapter_1.md │ └── intro.md │ └── theme │ └── index.hbs ├── codegen └── rust │ ├── Cargo.toml │ └── src │ ├── control.rs │ ├── expression.rs │ ├── header.rs │ ├── lib.rs │ ├── p4struct.rs │ ├── parser.rs │ ├── pipeline.rs │ └── statement.rs ├── dtrace ├── accepted.d ├── dropped.d ├── dtrace-list-probes.sh ├── softnpu-inout.d ├── softnpu-monitor.d └── softnpu-stats.d ├── lang ├── p4-macro-test │ ├── Cargo.toml │ └── src │ │ ├── ether.p4 │ │ └── main.rs ├── p4-macro │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── p4rs │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── bitmath.rs │ │ ├── checksum.rs │ │ ├── error.rs │ │ ├── externs.rs │ │ ├── hicuts.rs │ │ ├── lib.rs │ │ ├── rice.rs │ │ └── table.rs └── prog │ ├── README.md │ └── sidecar-lite │ ├── Cargo.toml │ ├── build.rs │ └── src │ └── lib.rs ├── p4 ├── Cargo.toml ├── examples │ ├── bad │ │ ├── checker │ │ │ ├── parser-no-start-state.p4 │ │ │ ├── parser-undefined-state-stmt-lval.p4 │ │ │ ├── struct-undefined-member-type-ref.p4 │ │ │ └── undefined_type_ref_parser_arg.p4 │ │ ├── lexer │ │ │ └── constants.p4 │ │ └── parser │ │ │ ├── badness-included.p4 │ │ │ ├── empty-include.p4 │ │ │ ├── naked-include.p4 │ │ │ └── non-integer-width-param.p4 │ ├── bump-in-the-wire.p4 │ ├── codegen │ │ ├── README.md │ │ ├── core.p4 │ │ ├── double_instantiation.p4 │ │ ├── header-stack.p4 │ │ ├── ipv6_header.p4 │ │ ├── list.p4 │ │ ├── parser-structs-and-headers.p4 │ │ ├── router.p4 │ │ └── softnpu.p4 │ ├── constants.p4 │ ├── control.p4 │ ├── headers.p4 │ ├── include.p4 │ ├── parser.p4 │ ├── pound-define-func.p4 │ ├── preproc.p4 │ ├── softnpu.p4 │ └── structs.p4 └── src │ ├── ast.rs │ ├── check.rs │ ├── error.rs │ ├── hlir.rs │ ├── lexer.rs │ ├── lib.rs │ ├── parser.rs │ ├── preprocessor.rs │ └── util.rs ├── rust-toolchain.toml ├── test ├── Cargo.toml ├── README.md ├── build.rs └── src │ ├── arithmetic.rs │ ├── basic_router.rs │ ├── controller_multiple_instantiation.rs │ ├── data.rs │ ├── decap.rs │ ├── disag_router.rs │ ├── dload.rs │ ├── dynamic_router.rs │ ├── headers.rs │ ├── hub.rs │ ├── ipv6.rs │ ├── lib.rs │ ├── mac_rewrite.rs │ ├── p4 │ ├── arithmetic.p4 │ ├── controller_multiple_instantiation.p4 │ ├── core.p4 │ ├── decap.p4 │ ├── dynamic_router.p4 │ ├── dynamic_router_noaddr.p4 │ ├── dynamic_router_noaddr_nbr.p4 │ ├── headers.p4 │ ├── hub.p4 │ ├── range.p4 │ ├── router.p4 │ ├── sidecar-lite.p4 │ ├── softnpu.p4 │ ├── table_in_egress_and_ingress.p4 │ └── vlan_header.p4 │ ├── packet.rs │ ├── range.rs │ ├── softnpu.rs │ ├── table_in_egress_and_ingress.rs │ └── vlan.rs ├── x4c ├── Cargo.toml └── src │ ├── bin │ └── x4c.rs │ └── lib.rs └── x4c_error_codes ├── Cargo.toml └── src ├── error_codes └── E0001.md └── lib.rs /.cargo/config.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/.cargo/config.toml -------------------------------------------------------------------------------- /.github/buildomat/config.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/.github/buildomat/config.toml -------------------------------------------------------------------------------- /.github/buildomat/jobs/build-and-test.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/.github/buildomat/jobs/build-and-test.sh -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/.github/renovate.json -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/.github/workflows/rust.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | *.sw* 3 | out.rs 4 | tags 5 | -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | max_width = 80 2 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/Cargo.lock -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/Cargo.toml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/README.md -------------------------------------------------------------------------------- /book/.gitignore: -------------------------------------------------------------------------------- 1 | book 2 | -------------------------------------------------------------------------------- /book/code/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/Cargo.toml -------------------------------------------------------------------------------- /book/code/build.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/build.rs -------------------------------------------------------------------------------- /book/code/src/bin/core.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/core.p4 -------------------------------------------------------------------------------- /book/code/src/bin/headers.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/headers.p4 -------------------------------------------------------------------------------- /book/code/src/bin/hello-world.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/hello-world.p4 -------------------------------------------------------------------------------- /book/code/src/bin/hello-world.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/hello-world.rs -------------------------------------------------------------------------------- /book/code/src/bin/softnpu.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/softnpu.p4 -------------------------------------------------------------------------------- /book/code/src/bin/vlan-switch.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/vlan-switch.p4 -------------------------------------------------------------------------------- /book/code/src/bin/vlan-switch.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/code/src/bin/vlan-switch.rs -------------------------------------------------------------------------------- /book/text/book.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/book.toml -------------------------------------------------------------------------------- /book/text/src/01-01-installation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/01-01-installation.md -------------------------------------------------------------------------------- /book/text/src/01-02-hello_world.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/01-02-hello_world.md -------------------------------------------------------------------------------- /book/text/src/01-03-compile_and_run.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/01-03-compile_and_run.md -------------------------------------------------------------------------------- /book/text/src/01-basics.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/01-basics.md -------------------------------------------------------------------------------- /book/text/src/02-01-vlan-switch.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/02-01-vlan-switch.md -------------------------------------------------------------------------------- /book/text/src/02-by-example.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/02-by-example.md -------------------------------------------------------------------------------- /book/text/src/03-01-endianness.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/03-01-endianness.md -------------------------------------------------------------------------------- /book/text/src/03-guidelines.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/03-guidelines.md -------------------------------------------------------------------------------- /book/text/src/SUMMARY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/SUMMARY.md -------------------------------------------------------------------------------- /book/text/src/chapter_1.md: -------------------------------------------------------------------------------- 1 | # Chapter 1 2 | -------------------------------------------------------------------------------- /book/text/src/intro.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/src/intro.md -------------------------------------------------------------------------------- /book/text/theme/index.hbs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/book/text/theme/index.hbs -------------------------------------------------------------------------------- /codegen/rust/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/Cargo.toml -------------------------------------------------------------------------------- /codegen/rust/src/control.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/control.rs -------------------------------------------------------------------------------- /codegen/rust/src/expression.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/expression.rs -------------------------------------------------------------------------------- /codegen/rust/src/header.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/header.rs -------------------------------------------------------------------------------- /codegen/rust/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/lib.rs -------------------------------------------------------------------------------- /codegen/rust/src/p4struct.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/p4struct.rs -------------------------------------------------------------------------------- /codegen/rust/src/parser.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/parser.rs -------------------------------------------------------------------------------- /codegen/rust/src/pipeline.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/pipeline.rs -------------------------------------------------------------------------------- /codegen/rust/src/statement.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/codegen/rust/src/statement.rs -------------------------------------------------------------------------------- /dtrace/accepted.d: -------------------------------------------------------------------------------- 1 | control_accepted* { 2 | printf("\n%s\n", copyinstr(arg0)); 3 | } 4 | -------------------------------------------------------------------------------- /dtrace/dropped.d: -------------------------------------------------------------------------------- 1 | ::ingress_dropped { 2 | printf("\n%s\n", copyinstr(arg0)); 3 | } 4 | -------------------------------------------------------------------------------- /dtrace/dtrace-list-probes.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pfexec dtrace -l -n softnpu_provider*::: 4 | -------------------------------------------------------------------------------- /dtrace/softnpu-inout.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/dtrace/softnpu-inout.d -------------------------------------------------------------------------------- /dtrace/softnpu-monitor.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/dtrace/softnpu-monitor.d -------------------------------------------------------------------------------- /dtrace/softnpu-stats.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/dtrace/softnpu-stats.d -------------------------------------------------------------------------------- /lang/p4-macro-test/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4-macro-test/Cargo.toml -------------------------------------------------------------------------------- /lang/p4-macro-test/src/ether.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4-macro-test/src/ether.p4 -------------------------------------------------------------------------------- /lang/p4-macro-test/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4-macro-test/src/main.rs -------------------------------------------------------------------------------- /lang/p4-macro/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4-macro/Cargo.toml -------------------------------------------------------------------------------- /lang/p4-macro/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4-macro/src/lib.rs -------------------------------------------------------------------------------- /lang/p4rs/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/Cargo.toml -------------------------------------------------------------------------------- /lang/p4rs/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/README.md -------------------------------------------------------------------------------- /lang/p4rs/src/bitmath.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/bitmath.rs -------------------------------------------------------------------------------- /lang/p4rs/src/checksum.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/checksum.rs -------------------------------------------------------------------------------- /lang/p4rs/src/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/error.rs -------------------------------------------------------------------------------- /lang/p4rs/src/externs.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/externs.rs -------------------------------------------------------------------------------- /lang/p4rs/src/hicuts.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/hicuts.rs -------------------------------------------------------------------------------- /lang/p4rs/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/lib.rs -------------------------------------------------------------------------------- /lang/p4rs/src/rice.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/rice.rs -------------------------------------------------------------------------------- /lang/p4rs/src/table.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/p4rs/src/table.rs -------------------------------------------------------------------------------- /lang/prog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/prog/README.md -------------------------------------------------------------------------------- /lang/prog/sidecar-lite/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/prog/sidecar-lite/Cargo.toml -------------------------------------------------------------------------------- /lang/prog/sidecar-lite/build.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/prog/sidecar-lite/build.rs -------------------------------------------------------------------------------- /lang/prog/sidecar-lite/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/lang/prog/sidecar-lite/src/lib.rs -------------------------------------------------------------------------------- /p4/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/Cargo.toml -------------------------------------------------------------------------------- /p4/examples/bad/checker/parser-no-start-state.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/bad/checker/parser-no-start-state.p4 -------------------------------------------------------------------------------- /p4/examples/bad/checker/parser-undefined-state-stmt-lval.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/bad/checker/parser-undefined-state-stmt-lval.p4 -------------------------------------------------------------------------------- /p4/examples/bad/checker/struct-undefined-member-type-ref.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/bad/checker/struct-undefined-member-type-ref.p4 -------------------------------------------------------------------------------- /p4/examples/bad/checker/undefined_type_ref_parser_arg.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/bad/checker/undefined_type_ref_parser_arg.p4 -------------------------------------------------------------------------------- /p4/examples/bad/lexer/constants.p4: -------------------------------------------------------------------------------- 1 | const bit<32> ENTERPRISE = 0z1701D; 2 | -------------------------------------------------------------------------------- /p4/examples/bad/parser/badness-included.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/bad/parser/badness-included.p4 -------------------------------------------------------------------------------- /p4/examples/bad/parser/empty-include.p4: -------------------------------------------------------------------------------- 1 | #include <> 2 | -------------------------------------------------------------------------------- /p4/examples/bad/parser/naked-include.p4: -------------------------------------------------------------------------------- 1 | #include core.p4 2 | -------------------------------------------------------------------------------- /p4/examples/bad/parser/non-integer-width-param.p4: -------------------------------------------------------------------------------- 1 | const bit ENTERPRISE = 0x1701D; 2 | -------------------------------------------------------------------------------- /p4/examples/bump-in-the-wire.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/bump-in-the-wire.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/README.md -------------------------------------------------------------------------------- /p4/examples/codegen/core.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/core.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/double_instantiation.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/double_instantiation.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/header-stack.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/header-stack.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/ipv6_header.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/ipv6_header.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/list.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/list.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/parser-structs-and-headers.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/parser-structs-and-headers.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/router.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/router.p4 -------------------------------------------------------------------------------- /p4/examples/codegen/softnpu.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/codegen/softnpu.p4 -------------------------------------------------------------------------------- /p4/examples/constants.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/constants.p4 -------------------------------------------------------------------------------- /p4/examples/control.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/control.p4 -------------------------------------------------------------------------------- /p4/examples/headers.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/headers.p4 -------------------------------------------------------------------------------- /p4/examples/include.p4: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /p4/examples/parser.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/parser.p4 -------------------------------------------------------------------------------- /p4/examples/pound-define-func.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/pound-define-func.p4 -------------------------------------------------------------------------------- /p4/examples/preproc.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/preproc.p4 -------------------------------------------------------------------------------- /p4/examples/softnpu.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/softnpu.p4 -------------------------------------------------------------------------------- /p4/examples/structs.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/examples/structs.p4 -------------------------------------------------------------------------------- /p4/src/ast.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/ast.rs -------------------------------------------------------------------------------- /p4/src/check.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/check.rs -------------------------------------------------------------------------------- /p4/src/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/error.rs -------------------------------------------------------------------------------- /p4/src/hlir.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/hlir.rs -------------------------------------------------------------------------------- /p4/src/lexer.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/lexer.rs -------------------------------------------------------------------------------- /p4/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/lib.rs -------------------------------------------------------------------------------- /p4/src/parser.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/parser.rs -------------------------------------------------------------------------------- /p4/src/preprocessor.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/preprocessor.rs -------------------------------------------------------------------------------- /p4/src/util.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/p4/src/util.rs -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/rust-toolchain.toml -------------------------------------------------------------------------------- /test/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/Cargo.toml -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/README.md -------------------------------------------------------------------------------- /test/build.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/build.rs -------------------------------------------------------------------------------- /test/src/arithmetic.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/arithmetic.rs -------------------------------------------------------------------------------- /test/src/basic_router.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/basic_router.rs -------------------------------------------------------------------------------- /test/src/controller_multiple_instantiation.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/controller_multiple_instantiation.rs -------------------------------------------------------------------------------- /test/src/data.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/data.rs -------------------------------------------------------------------------------- /test/src/decap.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/decap.rs -------------------------------------------------------------------------------- /test/src/disag_router.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/disag_router.rs -------------------------------------------------------------------------------- /test/src/dload.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/dload.rs -------------------------------------------------------------------------------- /test/src/dynamic_router.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/dynamic_router.rs -------------------------------------------------------------------------------- /test/src/headers.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/headers.rs -------------------------------------------------------------------------------- /test/src/hub.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/hub.rs -------------------------------------------------------------------------------- /test/src/ipv6.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/ipv6.rs -------------------------------------------------------------------------------- /test/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/lib.rs -------------------------------------------------------------------------------- /test/src/mac_rewrite.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/mac_rewrite.rs -------------------------------------------------------------------------------- /test/src/p4/arithmetic.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/arithmetic.p4 -------------------------------------------------------------------------------- /test/src/p4/controller_multiple_instantiation.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/controller_multiple_instantiation.p4 -------------------------------------------------------------------------------- /test/src/p4/core.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/core.p4 -------------------------------------------------------------------------------- /test/src/p4/decap.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/decap.p4 -------------------------------------------------------------------------------- /test/src/p4/dynamic_router.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/dynamic_router.p4 -------------------------------------------------------------------------------- /test/src/p4/dynamic_router_noaddr.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/dynamic_router_noaddr.p4 -------------------------------------------------------------------------------- /test/src/p4/dynamic_router_noaddr_nbr.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/dynamic_router_noaddr_nbr.p4 -------------------------------------------------------------------------------- /test/src/p4/headers.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/headers.p4 -------------------------------------------------------------------------------- /test/src/p4/hub.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/hub.p4 -------------------------------------------------------------------------------- /test/src/p4/range.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/range.p4 -------------------------------------------------------------------------------- /test/src/p4/router.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/router.p4 -------------------------------------------------------------------------------- /test/src/p4/sidecar-lite.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/sidecar-lite.p4 -------------------------------------------------------------------------------- /test/src/p4/softnpu.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/softnpu.p4 -------------------------------------------------------------------------------- /test/src/p4/table_in_egress_and_ingress.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/table_in_egress_and_ingress.p4 -------------------------------------------------------------------------------- /test/src/p4/vlan_header.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/p4/vlan_header.p4 -------------------------------------------------------------------------------- /test/src/packet.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/packet.rs -------------------------------------------------------------------------------- /test/src/range.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/range.rs -------------------------------------------------------------------------------- /test/src/softnpu.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/softnpu.rs -------------------------------------------------------------------------------- /test/src/table_in_egress_and_ingress.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/table_in_egress_and_ingress.rs -------------------------------------------------------------------------------- /test/src/vlan.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/test/src/vlan.rs -------------------------------------------------------------------------------- /x4c/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/x4c/Cargo.toml -------------------------------------------------------------------------------- /x4c/src/bin/x4c.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/x4c/src/bin/x4c.rs -------------------------------------------------------------------------------- /x4c/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/x4c/src/lib.rs -------------------------------------------------------------------------------- /x4c_error_codes/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/x4c_error_codes/Cargo.toml -------------------------------------------------------------------------------- /x4c_error_codes/src/error_codes/E0001.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxidecomputer/p4/HEAD/x4c_error_codes/src/error_codes/E0001.md -------------------------------------------------------------------------------- /x4c_error_codes/src/lib.rs: -------------------------------------------------------------------------------- 1 | //mod error_codes; 2 | --------------------------------------------------------------------------------