Proto commits in p4lang/p4runtime

These 75 commits are when the Protocol Buffers files have changed:

Commit:74d7036
Author:Steffen Smolka
Committer:GitHub

proto: add Java proto-library targets and options (#607) Add first-class `java_proto_library` Bazel targets for all four protos and set `java_package`, `java_outer_classname`, and `java_multiple_files` on each, following the same conventions as protobuf's well-known types. The `org.p4` package prefix ensures global uniqueness and follows Java reverse-DNS conventions, as decided by the working group. Signed-off-by: Steffen Smolka <steffen.smolka@gmail.com>

The documentation is generated from this commit.

Commit:a2b1a1d
Author:Andy Fingerhut
Committer:GitHub

Add copyright and license info to most P4Runtime specification files (#609) * Add copyright and license info to most P4Runtime specification files Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Revert changes to status.proto as it is diff'd against another file elsewhere Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Use codegen to update generated files Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Update some more generated files Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Use "The P4 Language Consortium" as copyright holder for spec files Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> --------- Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu>

Commit:593e1f6
Author:Andy Fingerhut
Committer:GitHub

Add SPDX license id and copyright banners to source files needing them (#545) * Add SPDX license id and copyright banners to source files needing them Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Update auto-generated files Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Update year for one file Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * More updates to match latest contents of file Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> * Add Apache 2.0 license to several files added in the past year. Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> --------- Signed-off-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu>

Commit:2ed6cd7
Author:Matthew Lam
Committer:GitHub

Change PER_GROUP_ONLY to GROUP_ACTION and update P4Runtime spec (#604) * Change scope name Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Change from per_group to group_action for the scope enum Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> --------- Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>

Commit:dc05994
Author:Matthew Lam
Committer:GitHub

Support `group_action` field in ActionProfileActionSet (#594) \Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>

Commit:a692297
Author:Steffen Smolka
Committer:GitHub

Redesign the Rust crates. (#567) See rust/README.md for more details. Signed-off-by: Steffen Smolka <steffen.smolka@gmail.com>

Commit:f5b7195
Author:Steffen Smolka
Committer:Steffen Smolka

Redesign the Rust crates. See rust/README.md for more details. Signed-off-by: Steffen Smolka <steffen.smolka@gmail.com>

Commit:f5187a2
Author:Matthew Lam
Committer:GitHub

Update comment for weights_disallowed in ActionProfile (#566) Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>

Commit:1a72547
Author:Matthew Lam
Committer:GitHub

Support `weights_disallowed` field in P4Info (#563) Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>

Commit:baaf393
Author:Angela Zhang
Committer:GitHub

(proto change) Add ActionSelectionMode and SizeSemantics to ActionProfileActionSet in P4Runtime. (#561) * Create a separate PR for just the P4Runtime proto changes. Signed-off-by: Angela Zhang <angelazhangyr@gmail.com> * address comments --------- Signed-off-by: Angela Zhang <angelazhangyr@gmail.com>

Commit:8152793
Author:verios-google
Committer:GitHub

Add device_id field to capabilites request (#556) * Add device_id field to capabilites request Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com> * Update generated proto code Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com> * Add documentation on optional semantics of device_id Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com> * Fixed whitespace Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com> * Address documentation comments and also tried making sure lines weren't beyond 80 characters Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com> * nit: Removed extra period Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com> --------- Signed-off-by: verios-google <110698235+verios-google@users.noreply.github.com>

Commit:5e6138d
Author:verios-google
Committer:GitHub

Add `Any` protobuf message to CapabilitiesResponse for experimental features (#554)

Commit:d73b228
Author:Matthew Lam
Committer:GitHub

Support fallback ports in replicas for multicast (#508) * Support fallback ports in Replicas for multicast Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4Runtime-Spec to remove whitespace. Signed-off-by: Author Name <authoremail@example.com> Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Remove incorrect text in P4runtime-spec. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Support fallback ports in replicas for multicast Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4Runtime-Spec example for multicast Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4Runtime-Spec for multicast Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Support port fallback for multicast by adding backup replicas Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4Runtime-Spec to remove whitespace. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4Runtime-Spec. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the associated go and rust files with the versioning changes. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Support fallback ports as backup replicas for multicast Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Fix odd white spacing in p4runtime.proto Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update P4Runtime Spec to specify cases of when ports go down. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4RuntimeSpec to specify packet processing side effects of a fully down replica + it's backups Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update the P4RuntimeSpec to specify examples of packet processing side effects Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Updated comments and P4Runtime Spec examples. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update comment. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update P4Runtime-Spec.mdk with backup replicas being optional and properties of replicas and backup replicas Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update P4Runtime-Spec.mdk Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update p4runtime.proto Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update p4.v1.rs Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> * Update p4runtime.pb.go Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> --------- Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com> Signed-off-by: Author Name <authoremail@example.com>

Commit:dda9d66
Author:Chris Sommers
Committer:GitHub

Version 1.4.0 rc updates to bazel and protobuf comments (#499) * Add v1.4.0 comments to protobufs - fix https://github.com/p4lang/p4runtime/issues/487 (#490) * Added missing "Added/deprecated in v1.4.0" comments per convention. * Added missing "Added/deprecated in v1.4.0" comments per convention. * Refresh generated go files. Signed-off-by: chris <chris.sommers@keysight.com> * Update Bazel example to point to 1.4.0 (#493) Signed-off-by: Steffen Smolka <smolkaj@google.com> Signed-off-by: chris <chris.sommers@keysight.com> * Regenerate rust code. Signed-off-by: chris <chris.sommers@keysight.com> --------- Signed-off-by: chris <chris.sommers@keysight.com> Signed-off-by: Steffen Smolka <smolkaj@google.com> Co-authored-by: Steffen Smolka <smolkaj@google.com>

Commit:ec4eb5e
Author:Fabian Ruffy
Committer:GitHub

Add information about the initial default action to tables in the P4Info file. (#486)

Commit:d175898
Author:Steffen Smolka
Committer:GitHub

Remove accidental optional keyword. (#494) Fixes https://github.com/p4lang/p4runtime/issues/482 Signed-off-by: Steffen Smolka <smolkaj@google.com>

Commit:48e9ce8
Author:Jonathan DiLorenzo
Committer:GitHub

Add support for different meter types. (#484) * Add all changes from PR#473 * Add generated files. * Remove redundant paragraph. * Add note about how changing MeterConfig is a non-breaking change.

Commit:f10a410
Author:Jonathan DiLorenzo
Committer:Jonathan DiLorenzo

Support multicast resource information. (#472)

Commit:1baf842
Author:Jonathan DiLorenzo

Address comments.

Commit:fee499a
Author:Jonathan DiLorenzo
Committer:GitHub

Support multicast resource information. (#472)

Commit:bd0423d
Author:Jonathan DiLorenzo

Add an srTCM type and associated data and restrict usage so single rate two color markers meter equivalently to the other types.

Commit:cc1e04e
Author:Sayan Bandyopadhyay
Committer:GitHub

Generic Table First draft (#435) * Initial changes for generic tables * second changes * 3rd changes * 4th changes * 5th changes * Adding p4types and p4info changes for GenericData (#4) Adding another enum alongside P4IDs for generic tables as well * Adding varbits and a readme writeup (#5) * Adding varbit and a writeup * Adding proto changes * Adding genericTable for direct resources. Adding P4datatypespec to genericdatatype in p4types * * Adding more container types ** list ** bag ** set ** ordered_set * Moving GenericTable spec update to one big section to keep it organized * * Add Table categories introduction * * Adding 3-level property details (Table, Entry, field) * Adding more text on the data types in the spec * Adding Details on Operations in the Table categories * * Adding Read RPC details in table categories * Adding a table to show valid combinations of table properties * Adding default entry rules * Expanding combinations * review comments * * Explain more on indexed tables. How are duplicates handled * Add regular tables in the truth table * Calculation table can be volatile * Add column to lay out some examples for the table categories * Mention that the entry properties do not go in p4info * Flow chart to show INSERT decision flow. Added PNG file * Add in float more verbiage regarding volatile * Renamed generic_set to generic_unordered_set * Removed bag and ordered_set * Add p4type for string with min/max size * Update Go dependencies (#438) * Fixes https://github.com/p4lang/p4runtime/issues/439 (#440) Change CI workflow to skip publishing if PR spawned by dependabot * * Adding categories and properties in p4info * Adding example changes for above in GenericTables.md * Add default values to p4info. * * Removed GenericTable category from the p4info * Added more text about generic table type * Corrected typos and reference links * Replaced png file with svg file * Removed is_const_table since table properties are present * Adding space for dummy commit * Correcting typo * Adding dev branches to workflows (#443) * Correcting linter errors * Generating go and py files * Adding text regarding direct resources as GenericTables in TableEntry * some review comment changes * Andy review comments * remove whitespace * * Correcting GenericTable.md according to the p4info * Removing repeated file dfrom Param and Match top level * * Removing float from p4info and spec * Adding default value text to spec * Adding UnorderedSet to runtime * * Adding section to P4DataTypeSpec to indicate adding to GenericDataTypeSpec for any new additions * Removing P4DataTypeSpec from GenericDataTypeSpec * Adding default value to bool in GenericData * Moving GenericTable.md to docs * Correcting spec for removal of p4_type in generic_type. Adding generated code * * Shortening the field names in `GenericTable` to remove "genric_table_" prefixes * Correcting the text for type_name * * Making default_value as bytes * Adding "scope" to the union example * Adding default string value * review comments * linter error * Review comments Signed-off-by: Sayan Bandyopadhyay <sayan.bandyopadhyay@intel.com> * Correcting whitespace errors Signed-off-by: Sayan Bandyopadhyay <sayan.bandyopadhyay@intel.com> * Updating generated code Signed-off-by: Sayan Bandyopadhyay <sayan.bandyopadhyay@intel.com> --------- Signed-off-by: Sayan Bandyopadhyay <sayan.bandyopadhyay@intel.com> Signed-off-by: Bandyopadhyay, Sayan <sayan.bandyopadhyay@intel.com> Co-authored-by: Antonin Bas <antonin.bas@gmail.com> Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com>

Commit:575dbe8
Author:Jonathan DiLorenzo

Update specification to discuss new meter types.

Commit:750885b
Author:Jonathan DiLorenzo

First attempt at single_rate_two_color meters.

Commit:a6b4cf6
Author:Sayan Bandyopadhyay
Committer:GitHub

Updating generic-table-dev branch with p4lang:p4runtime:main (#468) * Update Go dependencies (#438) * Fixes https://github.com/p4lang/p4runtime/issues/439 (#440) Change CI workflow to skip publishing if PR spawned by dependabot * Adding dev branches to workflows (#443) * Support for initial entries (#432) * Define P4Runtime API support for tables with initial entries * Add TODO asking whether the format for the contents of entries files should be specified in the P4Runtime spec. * Fix a couple of things found by linter and compiling protobuf * Update autogenerated files * Document that TableEntry const field must be false in write requests * Add an appendix describing the contents of entries files generated by p4c * Clarify some wording. * Fix Madoko lint check * Replace TODO with cross reference to new appendix on entries files and clean up Madoko formatting in that appendix. * Replace TODO with an optimistic footnote. * Propose that TableEntry has new field const true for const entries and also for const default_action * Update auto-generated files * Define has_initial_entries to be true for tables with `const entries` Also fix a couple of spelling typos. * Update auto-generated files * Address several review comments * Address some more review comments. * Update auto-generated files again * Slight change in definition of has_initial_entries flag Propose that it is true if and only if the table property `entries` is present, _and_ the list of entries is not empty. * Update auto-generated files * Add "added in 1.4.0" notes to the two new fields * Clarify the description of the content of an entries file * Fix a typo, and add is_const field to list of TableEntry fields * Address review comment in new appendix * Fix #434: Remove obsolete TODO section in README (#447) * Fix #434: Remove obsolete TODO section in README Update the link to the auto-generated versions of the P4Runtime specification on the P4.org web site. Update the section "P4 Language Version Applicability" to version 1.2.4 of the P4_16 language specification, but list 3 known exceptions of features that have not been explicitly addressed yet. * Add P4_16 v1.2.4 language spec features that may need addressing in a future version of the P4Runtime API specification. * Update discussion of entry priorities in constant tables (#457) * Update discussion of entry priorities in constant tables * Correct description of entry priority for constant tables * Bump golang.org/x/net from 0.9.0 to 0.17.0 (#461) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.9.0 to 0.17.0. - [Commits](https://github.com/golang/net/compare/v0.9.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Remove 4 P4 language spec compatibility issues from the list (#459) * Remove 4 P4 language spec compatibility issues from the list During 2023-Sep-08 P4.org API work group meeting, it was agreed that there are no changes required to the P4Runtime API specification to be compatible with these updates in the language spec. * Add clarifying behavior of table with no `key` property back in since there are potentially open issues around p4c implementation and how it generates size field of tables in P4Info files that should be considered before considering that issue resolved. * Add metadata to multicast group entry (#446) Same role as the metadata field for table entry * Add proto_build_test rule that tests building the protos defined in the workspace. (#460) * Update license kind to Apache2.0 instead of generic notice (#464) * Bump google.golang.org/grpc from 1.56.1 to 1.56.3 (#465) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.56.1 to 1.56.3. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.56.1...v1.56.3) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Antonin Bas <antonin.bas@gmail.com> Co-authored-by: Chris Sommers <31145757+chrispsommers@users.noreply.github.com> Co-authored-by: Andy Fingerhut <andy_fingerhut@alum.wustl.edu> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: verios-google <110698235+verios-google@users.noreply.github.com> Co-authored-by: anksaiki <ankursaikia08@gmail.com> Co-authored-by: anksaiki <ankursaikia@google.com>

Commit:aac3859
Author:verios-google
Committer:GitHub

Add metadata to multicast group entry (#446) Same role as the metadata field for table entry

Commit:1e771c4
Author:Andy Fingerhut
Committer:GitHub

Support for initial entries (#432) * Define P4Runtime API support for tables with initial entries * Add TODO asking whether the format for the contents of entries files should be specified in the P4Runtime spec. * Fix a couple of things found by linter and compiling protobuf * Update autogenerated files * Document that TableEntry const field must be false in write requests * Add an appendix describing the contents of entries files generated by p4c * Clarify some wording. * Fix Madoko lint check * Replace TODO with cross reference to new appendix on entries files and clean up Madoko formatting in that appendix. * Replace TODO with an optimistic footnote. * Propose that TableEntry has new field const true for const entries and also for const default_action * Update auto-generated files * Define has_initial_entries to be true for tables with `const entries` Also fix a couple of spelling typos. * Update auto-generated files * Address several review comments * Address some more review comments. * Update auto-generated files again * Slight change in definition of has_initial_entries flag Propose that it is true if and only if the table property `entries` is present, _and_ the list of entries is not empty. * Update auto-generated files * Add "added in 1.4.0" notes to the two new fields * Clarify the description of the content of an entries file * Fix a typo, and add is_const field to list of TableEntry fields * Address review comment in new appendix

Commit:bd51923
Author:Antonin Bas
Committer:GitHub

Deprecate egress_port (uint32) in favor of egress (bytes) in Replica (#331) This is to ensure consistency with the watch_port field. See https://github.com/p4lang/p4runtime/pull/317 Fixes #329

Commit:02f6c18
Author:Jonathan DiLorenzo
Committer:GitHub

Add max_member_weight to sum_of_members selector semantics (and change to oneof). (#399) Fixes #396 Co-authored-by: Antonin Bas <abas@vmware.com>

Commit:13f0d02
Author:jonathan-dilorenzo
Committer:GitHub

Add enum field to support different size calculations for ActionProfiles An enum field is added to the ActionProfile P4Info message. The value of this field determines the semantics of size and max_group_size.

Commit:c0abeab
Author:jonathan-dilorenzo
Committer:GitHub

Update Action Profiles to include a max_num_members field. (#386) Fixes #364 Co-authored-by: Antonin Bas <abas@vmware.com>

Commit:d85e95d
Author:kishanps
Committer:GitHub

Add per color counter data for meters. (#370) Both direct and indirect. This lets clients query the number of bytes / packets for each color bucket. Co-authored-by: Srikishen Pondicherry Shanmugam <kishanps@google.com>

Commit:b9a833c
Author:Steffen Smolka

Support static and dynamic p4runtime translations.

Commit:2167c22
Author:Steffen Smolka

Support for specifying type translations as part of the forwarding configuration.

Commit:0332e99
Author:Konstantin Weitz
Committer:GitHub

Add support for string roles & roles in reads. (#346) Fixes #344 Fixes #345

Commit:e9c0d19
Author:mkruskal-google
Committer:GitHub

Enabling arenas in runtime proto (#348) This will be enabled by default in future versions, and is necessary to generate protobuf arena methods.

Commit:0e39e55
Author:Steffen Smolka
Committer:GitHub

Clarify spec: annotation locations are optional. (#326) * Clarify spec: annotation locations are optional. * Update generated go files, and instructions for how to do so. Fixes #311.

Commit:4b36c2d
Author:Brian O'Connor
Committer:Antonin Bas

Replace references to 'master/slave' in the spec doc and figures Changes: - master -> primary - slave -> backup - mastership arbitration -> client arbitration - mastership -> primary client

Commit:9c8b5f5
Author:Stefan Heule
Committer:GitHub

Deprecate watch in favor of watch_port. (#317) * Deprecate watch in favor of watch_port. * Fix typo * Deprecate watch in favor of watch_port. * Update go files Co-authored-by: Stefan Heule <heule@google.com>

Commit:fb437ab
Author:Steffen Smolka
Committer:GitHub

Add source locations to annotations. (#286) * Add source locations to annotations. Addresses issue #285. * add annotation_locations also in p4types.proto; also structured annotations where misssing * fix indentation @chrispsommers * update spec * update go files * total path -> absolute path

Commit:4f6973d
Author:Antonin Bas
Committer:Antonin Bas

Add generated Go code for P4Runtime The generated files are placed under the go/ directory, and the 2 Go packages which can be imported by other projects are "github.com/p4lang/p4runtime/go/p4/v1" and "github.com/p4lang/p4runtime/go/p4/config/v1". As part of CI, we now check that the generated Go files are up-to-date with respect to the checked-in Protobuf files. We also check that the go.mod file is "tidy". When updating the Protobuf files, a contributor can re-generated the Go files with `./build/update_go.sh`. Fixes #260

Commit:7a322f3
Author:Antonin Bas
Committer:Antonin Bas

Small fixes for structured annotations While working on the p4c implementation, I realized that: * the ActionRef message was missing a structured_annotations field * we use kvpair and kv_pair inconsistently

Commit:85e075a
Author:Konstantin Weitz
Committer:GitHub

Support translation to strings (#274) * Support translation to strings * address suggestions

Commit:c9cd4af
Author:Chris Sommers
Committer:GitHub

Added Structured Annotations (#265) * Added Structured Annotations per https://github.com/p4lang/p4runtime/issues/264 * Modified protobuf schema per review discussion, added nested expressions example and made additional clarifications. * Simplify expressions within StructureAnnotations to base types (no nesting). * Added missing empty ExpressionList to example. * remove backtics Co-Authored-By: Antonin Bas <antonin.bas@gmail.com> * Make subsection for Structured Anno examples Co-Authored-By: Antonin Bas <antonin.bas@gmail.com> * Remove duplicate line. * Added statement about empty expressionLists. Fixed bilio entry. * Added "structured" to statement about empty expressionLists. * Changed "could" to "may." Spell P4Info consistently. * Removed empty exressionList from @Empty structured annotation example to agree with latest P4-16 spec in progress. Co-authored-by: Chris Sommers <chris.sommers@keysight.com> Co-authored-by: Antonin Bas <antonin.bas@gmail.com>

Commit:2f8ee47
Author:Stefan Heule
Committer:GitHub

Add metadata bytes field (#271) * Add metadata field to TableEntry, and deprecate controller_metadata * Fix typo and add changelog

Commit:a48b457
Author:Stefan Heule
Committer:Antonin Bas

Introduce new match kind called optional.

Commit:16aeec8
Author:Antonin Bas
Committer:GitHub

Add Capabilities RPC to P4Runtime service (#251) * Add Capabilities RPC to P4Runtime service The P4Runtime API WG decided to include this to P4Runtime v1.1. For now, this RPC will only enable the client to query the version of the P4Runtime specification implemented by the server. Fixes #249 * Rename p4runtime_version to p4runtime_api_version

Commit:c868d96
Author:Antonin Bas
Committer:GitHub

Support wildcard reads for multicast groups and clone sessions (#236) * Support wildcard reads for multicast groups and clone sessions For consistency with the rest of the P4Runtime API, a wildcard Read is achieved by "setting" the `multicast_group_id` (resp. `session_id`) field to its default value, which is 0 for sclar fields. This means that we introduce a small difference with the PSA spec, which explicitly allows 0 for clone session ids. * Address Stefan's review comment

Commit:2af85d9
Author:Antonin Bas
Committer:GitHub

Add error field to StreamMessageResponse oneof (#217) * Add error field to StreamMessageResponse oneof This field may be used by the server to report errors generated by invalid / unauthorized StreamMessageRequests. Fixes #215 * Address Stefan's review comment * Split one sentence into two Co-Authored-By: Carmelo Cascone <carmelo@ccascone.net>

Commit:6e866a5
Author:Andy Fingerhut
Committer:Antonin Bas

Add type_name field to P4Info Metadata message Add a description of this field to the text of the section describing the contents of ControllerPacketMetadata messages. Also add a description of the type_name field in the ValueSet section. It was already re-using the MatchField messages used by table search key fields, and already had this type_name field in it, but it seems best to explicitly mention that it can be included in MatchField messages for ValueSet objects, too.

Commit:c4754d0
Author:Antonin Bas
Committer:Antonin Bas

Formatting nitpicks * Use lowercase letters consistently in the protos and spec. This is an arbitrary decision for the sake of uniformity. It seems that lowercase letters were already used in most places. * Add missing backticks for one occurrence of TableEntry People may start thinking I'm running out of things to do.

Commit:06227fa
Author:Andy Fingerhut
Committer:Antonin Bas

Fix #173 - Update comments in proto file regarding table entry priority

Commit:f4d8606
Author:Antonin Bas
Committer:Antonin Bas

Support numeric translation for counter / meter / register indices This is done in a similar fashion to other kinds of translation (e.g. for match fields). It is convenient to support translation for indices as it is not unusual for indirect counters or registers to be indexed by the ig / eg port. Fixes #131

Commit:5214037
Author:Antonin Bas
Committer:GitHub

Improve P4Runtime Value Set support (#157) * Improve P4Runtime Value Set support The objectives of this change is to: * cover more cases supported by the P4_16 spec * provide more intuitive runtime programming * be more future-proof to reduce the potential changes in future P4Runtime versions In particular, we now support structs with bit<W> members as the type parameter for value_set. The members of the struct may have different match types. Fixes #135 Fixes #134 * Andy's review comments and typos

Commit:0fc7f3f
Author:Antonin Bas
Committer:Antonin Bas

Require idle_timeout_ns to be set in IdleTimeoutNotification I think it makes sense to include that information for the P4Runtime client.

Commit:d1a1ff6
Author:Antonin Bas
Committer:GitHub

Define canonical representation for P4Data compound types (#153) * Define canonical representation for P4Data compound types By introducing additional constraints, thus ensuring read-write symmetry. Fixes #141 * Andy's comments

Commit:ee9e5c5
Author:Andy Fingerhut
Committer:Antonin Bas

Fix #114 - Remove obsolete references to P4_14 language

Commit:87b98bd
Author:Carmelo Cascone
Committer:Antonin Bas

Typo fixes Includes also minor editorial changes: - Consistently use "control plane" and "data plane" - 80 char column wrap

Commit:89bc566
Author:Antonin Bas
Committer:Antonin Bas

Clarify the meaning of the alias field in P4Info Also removed some old TODOs

Commit:a09e77d
Author:Antonin Bas
Committer:Antonin Bas

Support architecture-specific notifications on stream Extend StreamMessageRequest and StreamMessageResponse with an Any Protobuf field to embed architecture-specific messages. Fixes #57

Commit:bd21e97
Author:Antonin Bas
Committer:Antonin Bas

Better support for @defaultonly and @tableonly annotations These annotations are now "first-class citizens" in P4Info: an enum field is used to indicate the scope of the action, i.e. how the action can be used. This commit also removes const_default_action_has_mutable_params, which was introduced for P4_14 initially and has fallen out of use. Fixes #83

Commit:32c1f05
Author:Antonin Bas
Committer:Antonin Bas

Remove "complete" flag from ReadResponse message Fixes #77

Commit:a66775b
Author:Antonin Bas
Committer:Antonin Bas

Move to canonical representation for serializable enums In order to facilitate read-write symmetry. If we only have one valid representation, it needs to be the bitvector one, as not all possible numeric values have to be named. Fixes #64

Commit:58ee757
Author:Antonin Bas
Committer:Antonin Bas

Fix comments in p4runtime.proto Some comments for direct resource fields in TableEntry did not match the spec. Other comments needed some formatting work.

Commit:8b3b71c
Author:Antonin Bas
Committer:Antonin Bas

The value_set size is provided as a constructor parameter It is not an annotation any more the latest P4_16 version

Commit:4be60ac
Author:Antonin Bas
Committer:GitHub

Clarify controller role definition (#70) * Clarify controller role definition With some information about what a role definition may include. Fixes #56 * Better error code in case of invalid device_id / role_id

Commit:78df13e
Author:Carmelo Cascone
Committer:Antonin Bas

Adds ability to associate a cookie to the forwarding-pipeline config (#59) * Adds ability to associate a cookie to the forwarding-pipeline config This change also allow a client to verify the config on the target by asking the server to return only the cookie, minimizing the amount of data in the response message (vs. returning the full P4 blob) * Wrapped cookie in sub-message and addressed other review comments * Fixed nit

Commit:97a8b35
Author:Antonin Bas
Committer:Antonin Bas

Add section on extending P4Runtime for non-PSA architectures in spec I didn't want to keep this section too long, it mostly gathers information which is otherwise spread through the specification. This is based on my experience extending P4Runtime to support Barefoot-specific architectures. Fixes #47

Commit:35a0cea
Author:Andy Fingerhut
Committer:Antonin Bas

Update the names used in CloneSessionId documentation to match proto file There were also a few old uses of `replica_id` replaced with `instance` in a multicast group example.

Commit:4fd3fc9
Author:Antonin Bas
Committer:Antonin Bas

Remove meter color-awareness information from P4Info There doesn't seem to be any point in keeping this in P4Info at the moment. First the semantics are murky because in PSA each execute call on a meter is either color-aware or color-blind (i.e. it is not an attribute of the meter object itself). Second, at the moment this information cannot be leveraged in any way by a P4 client since P4Runtime does not expose any knob to enable / disable color-awareness on a per meter entry basis at runtime. Even if there was such a knob, it would be hard to reconciliate it with PSA semantics: in PSA the same meter can be "executed" in 2 different actions, in color-aware mode in one and in color-blind mode in the other; these 2 action can use the same indirect meter entry. Fixes #58

Commit:5dbbffd
Author:Antonin Bas
Committer:Antonin Bas

Add reserved SDN port numbers to P4Runtime Also fixed the Protobuf type for some standard (translated) PSA metadata entities, such as multicast group id. The Protobuf type is determined by the bitwidth of the translated type. It is somewhat independent of the corresponding PSA InHeader_t types. Fixes #49 Fixes #51

Commit:823e0d3
Author:Antonin Bas
Committer:GitHub

Tentative support for new (user-defined) types in P4Info (#50) * Tentative support for new (user-defined) types in P4Info We update P4DataTypeSpec to be able to represent user-defined types in P4Info. Translation (when the control-plane view differes from the underlying data-plane type) may be required for new types through the @p4runtime_translation annotation and this information is preserved in P4Info. As decided previously, we do not break backward-compatibility for action parameters and match fields. For these we do not use P4DataTypeSpec but instead we add a new Protobuf field ("type_name") which is set if the action parameter / match field is a user-defined type (which must map to an underlying bit vector in this case). * Fix typos * In P4NewTypeSpec, do not include original_type for translated types * Address review comments

Commit:1805878
Author:Konstantin Weitz
Committer:GitHub

Extending the spec with one shot action selector programming (#42) Specify one shot action selector programming

Commit:b718215
Author:Antonin Bas
Committer:Antonin Bas

Fix typo in some protobuf comments s/@controller_metadata/@controller_header. controller_header (annotation to tag a CPU header in P4 program) and controller_metadata (controller cookie in TableEntry message) are 2 different things.

Commit:c3550ca
Author:Antonin Bas
Committer:GitHub

Add proto definitions for P4Runtime and P4Info (#2) * Add proto definitions for P4Runtime and P4Inf Copied from p4lang/PI Also re-organized directory structure. We will have one top-level directory for docs and one for proto, instead of one per major version. This makes the directory structure "nicer" as the major version number is not repeated twice in the protobuf paths. * Update README