diff --git a/docs/v1/GenericTable.md b/docs/v1/GenericTable.md new file mode 100644 index 00000000..fe4df61e --- /dev/null +++ b/docs/v1/GenericTable.md @@ -0,0 +1,138 @@ +# GenericTable example p4info + +Below is an example for realizing MulticastGroupEntry as a GenericTable. +The key (MatchFields) comprise of only the group_id. 2 different ways of +defining the data fields has been presented. Only 1 of them is required. + +``` +generic_tables { + type_id : 145 + type_name : "MulticastGroup" + properties : { + "indexed" + } + instances { + preamble { + id: 45332650 + name: "MulticastGroup" + alias: "multicast_group" + } + generic_match_fields { + id: 1 + name: "multicast_group_id" + match_type: EXACT + type_spec { + bitstring { + bit { + bitwidth : 32 + } + } + } + } + union_refs { + id: 23557840 + scope: TABLE_AND_DEFAULT + } + size: 1024 + } +} +``` + +In the below one, both `instance` and `port` are separate +repeated fields. So the check on `len(instance_array) == len(port_array)` +needs to be a runtime check. This however keeps implementation simpler +and faster since we avoid further recursive nesting. + +`port` is a varbytes of max size 64 bits each. The field is a list so +it is defined as list of varbits through p4info. + +``` +unions { + preamble { + id: 23557840 + name: "multicast_group_member_add" + alias: "multicast_group_member_add" + } + params { + id: 1 + name: "instance" + type_spec { + list { + element_type_spec { + bitstring { + bit { + bitwidth : 32 + } + } + } + max_size : 10 + } + } + } + params { + id: 2 + name: "port" + type_spec { + list { + type_spec { + bitstring { + varbit { + max_bitwidth : 64 + } + } + } + max_size : 10 + } + } + } +} + +``` + +The below one is similar to the above but both `instance` and `port` have +been converted to a list of structs. + +``` +unions { + preamble { + id: 23557841 + name: "multicast_group_member_add_2" + alias: "multicast_group_member_add_2" + } + params { + id: 1 + name: "replica" + type_spec { + list { + element_type_spec { + struct { + members { + id : 1 + name : "instance" + type_spec { + bitstring { + bit { + bitwidth : 32 + } + } + } + } + members { + id : 2 + name : "port" + type_spec { + bitstring { + varbit { + max_bitwidth : 64 + } + } + } + } + } + } + max_size : 10 + } + } + } +} +``` diff --git a/docs/v1/P4Runtime-Spec.mdk b/docs/v1/P4Runtime-Spec.mdk index 0dc5fef4..f49f0ca2 100755 --- a/docs/v1/P4Runtime-Spec.mdk +++ b/docs/v1/P4Runtime-Spec.mdk @@ -2029,6 +2029,9 @@ The `Digest` message defines the following fields: notification using a `P4DataTypeSpec` message (see section on [Representation of Arbitrary P4 Types](#sec-representation-of-arbitrary-p4-types)). +### `GenericTable` { #sec-p4info-generic-table} +See section [GenericTable P4info](#sec-p4info-generic-table) for more info + ### `Extern` { #sec-p4info-extern} `Extern` messages are used to specify all extern instances across all extern @@ -2620,6 +2623,10 @@ is guaranteed to be the same as the order of the members in the corresponding P4~16~ declaration. The same goes for the order of members of an `enum` (serializable or not) or members of `error`. +If adding any new data type to `P4DataTypeSpec`, please consider adding a +counterpart to `GenericDataTypeSpec` for `GenericTable` as present in section +[GenericData](#sec-p4data-generic-data) + ### `P4Data` in p4runtime.proto { #sec-p4data-in-p4runtime-proto } P4Runtime uses the `P4Data` message to represent values of arbitrary types. The @@ -2969,6 +2976,11 @@ tables { } ~ End Prototext +### GenericData +See section [GenericData p4types](#sec-p4data-generic-data) for more info on the +info type. See section [GenericData p4data](#sec-p4types-generic-data) for more +info on the runtime type. + # P4 Entity Messages { #sec-p4-entity-msgs} P4Runtime covers P4 entities that are either part of the P4~16~ language, or @@ -3035,6 +3047,14 @@ the `TableEntry` entity, which has the following fields: * `is_const`, a boolean value that is `true` if and only if the entry cannot be modified or deleted by the client. +* `resources`, a `repeated GenericTableEntry` to contain a list of + target-specific direct resources. For example, if a target supports special + direct resources like x-meter and y-counter, then the P4info will contain + GenericTable representations of the same and the list here can contain one + member for each of the direct resources. If the generic match fields are set + in these entries, it returns an `INVALID_ARGUMENT` errot. The IDs will be + mentioned in the `direct_resource_ids` in the P4info. + The `priority` field must be set to a non-zero value if the match key includes a ternary match (&ie; in the case of PSA if the P4Info entry for the table indicates that one or more of its match fields has an `OPTIONAL`, `TERNARY` or @@ -4901,6 +4921,10 @@ message should be defined in a separate architecture-specific Protobuf file. See section on [Extending P4Runtime for non-PSA Architectures](#sec-extending-p4runtime) for more information. +## `GenericTableEntry` +See section [GenericTableEntry p4runtime](#sec-generic-table-entry) for more +info. + # Error Reporting Messages { #sec-error-reporting-messages} P4Runtime is based on gRPC and all RPCs return a status to indicate success or @@ -6404,6 +6428,426 @@ field [@ProtoAny]. At the moment, there is not any mechanism to extend the `p4.v1.TableEntry` message based on the value of architecture-specific table properties, but we may include on in future versions of the API. +# GenericTable { #sec-generic-table} + +`GenericTable` is used to map non-PSA P4 externs or target-specific "fixed" +features to their implementation in a generic way. The same can +be achieved via `Extern`, but `GenericTable` provides a structured way in which +every feature is represented as a set of match-fields and data-fields. The data +consists of unions which are similar to actions. One use of `GenericTable` in a +server backend is with TDI [Table Driven +Interface](https://github.com/p4lang/tdi), but targets can use Generic table to +map to their own specific feature implementations as well. + +## Generic Table ID Space { #sec-generic-table-id-space } + +A field in the `GenericTable` message in the P4info defines a +`generic_table_type_id`. + +It is an 8-bit unsigned integer which uniquely identifies +the generic_table_type in the context of the architecture. +This value is in the range of `[0x00, 0xff]`. +The ID in the preamble is created as `(0x18 << 24) + (generic_table_type_id +<< 16) + (16-bit ID generated by the P4 compiler)`. The `generic_table_type` +depicts a new table "type" which would have similar properties. + +Let's say we have 2 target specific P4 externs called `XyzCounter` and +`XyzMeter` and each of them has 2 instances. `XyzCounter` has +`generic_table_type` as 1 and `XyzMeter` as 2. + +```text +XyzCounter1 : 0x18 01 00 01 +XyzCounter2 : 0x18 01 00 02 + +XyzMeter1 : 0x18 02 00 01 +XyzMeter2 : 0x18 02 00 02 +``` +The above system ensures that the instance space allows for 65355 +instances. The table type space is limited to 255. + +Some optional guidelines: +* For P4 externs, any new extern to have a new table type. +* For target-specific fixed function blocks, options are + * All fixed tables grouped under one giant non_p4 table type + * Tables divided on the basis of categories. Categories are defined in the + spec but aren't part of the P4info. + * Every table has its own table-type. This can however lead to running out + of the 8 bit type ID space soon. +Note that this value does not need +to be unique across all architectures from all organizations, since at any +given time every device managed by a P4Runtime server maps to a single P4Info +message and a single architecture. + + +## GenericTable P4info { #sec-p4info-generic-table} + +A GenericTable message in P4info defines one type of generic table, but not a +specific instance of a generic table. Each instance of a generic table is +defined by a GenericTableInstance message. This separation allows field values +that are common for all instances with the same generic table type to be +defined in one place, the GenericTable message. +A `GenericTable` message defines the following fields: + +* `type_id`, an 8-bit unsigned integer which uniquely identifies + the generic_table_type in the context of the architecture. See section + [Generic Table ID space](#sec-generic-table-id-space) for more details. + +* `type_name`, which specifies the "type" of the `GenericTable`. For example, + if the target has a meter called `SpecialMeter`, then this would contain + "SpecialMeter". In cases of non-P4 entities, it is a "type" which helps + identify this entity with a feature for example "MulticastGroup". For non- + P4 entities, sometimes the instance name and type name are the same + +* `repeated string properties`, please check generic-table + properties under section [GenericTable + categories](#sec-generic-table-categories) for more details. + +* `repeated GenericTableInstance`, contains the info for one instance of + a generic-table-type. All tables of one type are grouped under this. + +GenericTableInstance +* `preamble`, a `Preamble` message with the ID, name, and alias of this + `GenericTable` instance. + +* `generic_match_fields`, a repeated field of type `GenericMatchField` + representing the data to be used to construct the lookup key matched in this + table. For information check the generic_match_fields info in the [Generic + Table section](#sec-generic-table-entry). + +* `union_refs`, a repeated `UnionRef` field representing the set of possible + union members for this table. Functionally, it behaves same as that of + `ActionRefs`. + Please check the union_refs info in the [Generic Table section] + (#sec-generic-table-entry). + +* `const_default_union_id`, if this table has a constant default union, this + field will carry the `uint32` identifier of that action, otherwise its value + will be 0.It is similar to a default action for Match Tables. Being constant + means that the control plane cannot set a different default union at runtime + or change the default union's fields. + +* `size`, an `int64` describing the desired number of table entries that the + target should support for the table. See the "Size" subsection within the + "Table Properties" section of the P4~16~ language specification for details + [@P4TableProperties]. + +* `other_properties`, an `Any` Protobuf message [@ProtoAny] to embed + architecture-specific or target-specific table properties [@P4TableProperties] + that the target wants to convey. + +## `GenericData` { #sec-p4data-generic-data} + +`GenericData` is an addition to p4data.proto- which adds support for +data types which are not covered by P4Data. This incorporates all the data types +used as primitive data types like bytes, strings. +Some of them have default values. These default values are only applicable +when in a Union field and not for Match fields. Match fields do not have +default values because if a match field is not present, then it is considered +to be a wildcard match. But if a union member is not present, then the default +value is used. Numeric Default values have been kept as `bytes` so that +lengths > 64 can be easily accommodated. + + * bitstring : Bytes type used for simple unsigned integers or bytes. Default + value applicable. If not present, it is 0. + * bool : Boolean type values. Default value applicable. If not present, it + is `false`. + * generic_struct : Used to define a structure that can contain + one or more of the other members as named fields. One structure can contain + different members of different types in GenericData. + * generic_list : Used to define a list of values with the same type. + Members are ordered and duplicates are allowed. + * generic_unordered_set : Used to define a set of same types. Members are + unordered and duplicates are not allowed. + * string : Used to define control plane strings. The max string length is + defined by the size. Default value applicable. If not present, it is empty + string: "". + * enum : String representation with which unserializable enums are realized. + Default value applicable. It should always be present. Enums have a list + of choices. + * enum_val : bytes value with which serializable enums are defined. + Default value applicable. If not present, it is 0. + +### Equality of data types { #sec-equality-of-data-types } + + * bitstring : 2 bitstrings are equal if value and size are both equal. + So `00` and `00 00` are not equal. + * bool : If both values have same `True` or `False` value. + * generic_struct : 2 structs are equal if each member is equal. + * generic_list : 2 lists are equal if each member is equal. The size and + order of the lists need to be the same as well. + * generic_unordered_set : 2 sets are equal if each member is equal. The + size should be equal as well. Order doesn't matter. + * string : 2 strings are equal if they match each other. Case sensitive. + * enum : 2 enums are equal if they are the same value. + * enum_val : 2 enum_vals are equal if the byte values are the same. Size + matching isn't needed. + +## `GenericTableEntry` { #sec-generic-table-entry} + +GenericTableEntry can be used to program non-PSA externs or non-P4 +target-specific "fixed" features to their implementation in a generic way. This +provides an alternative to `Extern` in a structured way and within p4runtime +guidelines and semantics. The idea has been borrowed from TDI [Table Driven +Interface](https://github.com/p4lang/tdi), that every state can be representated +as a table or multiple tables. A table here is any data structure with one or +more entries and each entry can be represented as a set of key fields and data +fields. Actions in P4 tables behave like unions and that has been borrowed here +in `GenericTable`. Note that because of the close similarities between +GenericTable and the TDI API, it is intended that relatively simple software +could implement translation of GenericTable configuration messages into local +TDI API calls. Details of this are left for other future documents to specify. + +P4Runtime supports inserting, modifying, deleting and reading `GenericTable` +entries with the `GenericTableEntry` message, which has the following fields: + +* `table_id`, which identifies the table instance; the `table_id` is determined + by the P4Info message. + +* `match`, a repeated field of `GenericFieldMatch` messages. Each element in the + repeated field is used to provide a value for the corresponding element in the + P4info. + +* `union`, which indicates which of the table's unions are present in the data + of the entry and with which field values. + +* `priority`, a 32-bit integer used to order entries when the table's match key + includes an optional, ternary or range match. + +* `is_default_entry`, a boolean flag which indicates whether the table entry is + the default entry for the table. See [Default entry](#sec-default-entry) + section for more information. + +* `metadata`, an arbitrary `bytes` value which is opaque to the + target. There is no requirement of where this is stored, but it must be + returned by the server along with the rest of the entry when the client + performs a read on the entry. + +The `priority` field must be set to a non-zero value if the match key includes a +ternary match (&ie; in the case of PSA if the P4Info entry for the table +indicates that one or more of its match fields has an `OPTIONAL`, `TERNARY` or +`RANGE` match type) or to zero otherwise. A higher priority number indicates +that the entry must be given higher priority when performing a table lookup. +Clients must allow multiple entries to be added with the same priority value. +If a packet can match multiple entries with the same priority, it is not +deterministic in the data plane which entry a packet will match. If a client +wishes to make the matching behavior deterministic, it must use different +priority values for any pair of table entries that the same packet matches. + +The `match` and `priority` fields are used to uniquely identify an entry within +a table. Therefore, these fields cannot be modified after the entry has been +inserted and must be provided for `MODIFY` and `DELETE` updates. When deleting +an entry, these key fields (along with `is_default_action`) are the only fields +considered by the server. All other fields must be ignored, even if they have +nonsensical values (such as an invalid union field). In the case of a *keyless* +table (the table has an empty match key), the server must reject all attempts to +`INSERT` a match entry and return an `INVALID_ARGUMENT` error. + +The number of match entries that a table *should* support is indicated in P4Info +(`size` field of `Table` message). The guarantees provided to the P4Runtime +client are the same as the ones described in the P4~16~ specification for the +`size` property [@P4TableProperties]. In particular, some implementations may +not be able to always accommodate an arbitrary set of entries up to the +requested size, and other implementations may provide the P4Runtime client with +more entries than requested. The P4Runtime server must return +`RESOURCE_EXHAUSTED` when a table entry cannot be inserted because of a size +limitation. It is recommended that, for the sake of portability, P4Runtime +clients do not try to insert additional entries once the size indicated in +P4Info has been reached. + +## GenericTable Categories {#sec-generic-table-categories} + +All tables fall into certain "categories" which define what APIs are +applicable on the table and the APIs. + + * Regular tables: Read, INSERT, MODIFY, DELETE work as intended. Entries in + a table can be inserted, modified and deleted. + * `INSERT` : If another entry with same match key exists, then + `ALREADY_EXISTS` is returned. If no union is present in + `GenericTableEntry` message, then the union from the default + entry of the table is used. Some tables might not have a default entry, + then the union is required to be set. + If `default_entry` is true, then it is treated as a MODIFY. Const + default union rules apply. Match fields and priority should not be set. + +~ Figure { #fig-generic-tables-insert-flow; \ +caption: "Generic Tables : INSERT decision flow" } +![generic-tables-insert-flow] +~ +[generic-tables-insert-flow]: \ +build/generic-tables-insert-flow.[svg,png] \ +{ height: 7cm; page-align: forcehere } + + * `MODIFY` : Union field must be set since all data fields are under a + union. Modifies the union spec to new union or new field values if + same union. `NOT_FOUND` error if entry isn't found. + If `default_entry` is true, then the default entry is modified. Match + fields and priority should not be set. Const default union rules apply. + * `DELETE` : Only Match fields must be set. `NOT_FOUND` is returned if + the entry isn't found. If no Match fields are given, then all entries + are deleted (wildcard delete). If the table contained init entries, they + are restored to initial state with their original union and union field + values for wildcard deletes. + If `default_entry` is true, then the default entry is reset to initial + values. Const union rules apply. + Wildcard doesn't apply to default_entry. + * `READ` : The Read RPC. All entries can be read. If no entities are + provided in request, then all entries are read, AKA wildcard read. + If `default_entry` is true, then the default entry is returned. Match + fields should not be set in this case. + Wildcard read does NOT return default entry. + + * Modify-only tables: Entries exists from the time of initialization. Entries + cannot be inserted but only modified. Delete resets the entry to init time. + Read works as intended. + * `INSERT` : Not supported. Returns `NOT_SUPPORTED` error. + * `MODIFY` : Union field must be set since all data fields are under a + union. Modifies the union spec to new union or new field values if + same union. `NOT_FOUND` error if entry isn't found. + If `default_entry` is true, then the default entry is modified. Match + fields and priority should not be set. Const default union rules apply. + * `DELETE` : Instead of deleting, this operation resets the entry with + default values for every field. The union field values are changed + but the union itself isn't changed. + Only Match fields must be set. `NOT_FOUND` is returned if + the entry isn't found. If no Match fields are given, then all entries + are reset (wildcard reset). If the table contained init entries, they + are restored to initial state with their original union and union field + values for wildcard deletes. + If `default_entry` is true, then the default entry is reset to initial + values. Const union rules apply. + Wildcard doesn't apply to default_entry. + * `READ` : The Read RPC. All entries can be read. If no entities are + provided in request, then all entries are read, AKA wildcard read. + If `default_entry` is true, then the default entry is returned. Match + fields should not be set in this case. + Wildcard read does NOT return default entry. + + * Read-only tables: Entries can only be read. Write RPC doesn't work and + `NOT_SUPPORTED` is returned. + * `READ` : The Read RPC. All entries can be read. If no entities are + provided in request, then all entries are read, AKA wildcard read. + If `default_entry` is true, then the default entry is returned. Match + fields should not be set in this case. + Wildcard read does NOT return default entry. + + * Reset-only tables : + * `INSERT` : Not supported. Returns `NOT_SUPPORTED` error + * `MODIFY` : Not supported. Returns `NOT_SUPPORTED` error + * `DELETE` : Instead of deleting, this operation resets the entry with + default values for every field. + Only Match fields must be set. `NOT_FOUND` is returned if + the entry isn't found. If no Match fields are given, then all entries + are reset (wildcard reset). If the table contained init entries, they + are restored to initial state with their original union and union field + values for wildcard deletes. + If `default_entry` is true, then the default entry is reset to initial + values. Const union rules apply. + Wildcard doesn't apply to default_entry. + * `READ` : The Read RPC. All entries can be read. If no entities are + provided in request, then all entries are read, AKA wildcard read. + If `default_entry` is true, then the default entry is returned. Match + fields should not be set in this case. + Wildcard read does NOT return default entry. + + * Calculation tables: Entries can only be read. However different from + Read-only in the sense that there is no defined size of the table since + the possible range of matchfields can be immense. For example, hash + calculation tables where matchfields are the field values and the union + data contains the hash value. There is no default_entry for such tables. + Write RPC returns `NOT_SUPPORTED`. + They can be volatile as well. It is possible that the returned values aren't + always the same. For example, the hash calc table can return different + values depending upon if the hash configuration has been changed. + * `READ` : The Read RPC. Wildcard read doesn't exist for this table. + `NOT_SUPPORTED` is returned if wildcard read is attempted. + If match fields aren't set, then default values for the fields are used. + + + +## GenericTable properties + +Properties exist at 3 different levels - Table, entry and field (match or union) + +### Table properties + +Table properties are at table level. A combination of these define a certain +table category. By default, if absent, they are all always false + +* Read-only : No Add/Del/Mod work Modify-only : Table entries can only be + modifed +* Reset-only : Table can only be reset. Either entire table or individual + entries. +* Indexed : The entries are ordered. Every entry has an index associated with + it. Indexed tables can be either of modify-only, read-only, reset-only or + regular tables. If regular tables, then the target is expected to fill up gaps + when deleting and then adding entries again. Duplicate entries can exist or + not depending upon the table restrictions. Duplicate entries cannot be present + in regular tables because there is no way to differentiate between the added + entries. +* Keyless : Only one entry, &i.e; default entry exists. +* Calculation : No defined range of key values. For example, hash calculation + table for a set of field values. +* Volatile : Data plane can Add/Del/Mod entries. Example, Add-on-miss in PNA + +#### Combinations that are possible + +|Table Cat name | Read-only | Modify-only | Reset-only | Indexed | Keyless | +Calculation | Volatile | Example | | ---- | ---- | ---- | +---- | ---- | ---- | ---- | ---- | ---- | | Regular +| False | False | False | False | False | False | T/F +| MatchActionTable | | Regular-In | False | False | +False | True | False | False | T/F | MatchActionTable with +indexes | + +| Read-Only | True | False | False | False | False | +False | T/F | Port ID to name map | | Read-Only-Kl | +True | False | False | False | True | False | T/F +| Target Efuse information table | | Read-Only-In | True | False | +False | True | False | False | T/F | Virtual port ID to +name map | | Read-Only-Cal | True | False | False | False +| False | True | T/F | Hash calc table for field values | + +| Modify-Only | False | True | False | False | False | +False | T/F | | | Modify-Only-Kl| +False | True | False | False | True | False | T/F +| Target configuration table | | Modify-Only-In| False | True | +False | True | False | False | T/F | Counter table +| | Reset-Only | False | False | True | False | False | +False | T/F | Port stats | | Reset-Only-Kl | +False | False | True | False | True | False | T/F +| Target stats | | Reset-Only-In | False | False | +True | True | False | False | T/F | Virtual port stats +| + +Where, +Kl - Keyless +In - Indexed +Cal - Calculation + +In the above examples, Virtual ports have been considered to be an example +where they are indexed but ports aren't. + +### Entry properties + +These properties do not go as part of P4info since these are entry-specific and +not table specific. They go in as part of the entries fiel generated by the +compiler. + +* Const (read-only) +* Non-const init +* Modify-only +* Reset-only + +### Field properties + +* Read-only +* Modify-only +* Reset-only +* Mandatory : Whether user is required to provide value + during `INSERT`. Can be skipped on `MODIFY`. +* Volatile : Data plane volatile. Example counter bytes. + + # Known Limitations of Current P4Runtime Version * `FieldMatch`, action `Param`, and controller packet metadata fields only diff --git a/docs/v1/assets/generic-tables-insert-flow.svg b/docs/v1/assets/generic-tables-insert-flow.svg new file mode 100644 index 00000000..144c97bc --- /dev/null +++ b/docs/v1/assets/generic-tables-insert-flow.svg @@ -0,0 +1,4 @@ + + + +Does entry specify union ID?Does entry spec...Does table have Default entry?Does table have...Process every data field that has been specifiedProcess every dat...Use union from default entryUse union from de...ErrorError INSERTINSERT Is data field read-only, modify-only or reset-only?Is data field r...Specified data fields left?Specified data...Process unspecified regular data fieldsProcess unspecifi...Is it mandatory?Is it mandatory...Process fieldProcess field Process field and use default valueProcess field and...Unspecified data fields left?Unspecified dat...FinishFinish yesyes nono nono yesyes yesyes yesyes NoNo YesYes YesYes nono nono nono Text is not SVG - cannot display \ No newline at end of file diff --git a/go/p4/config/v1/p4info.pb.go b/go/p4/config/v1/p4info.pb.go index 18e648fa..cac77bf0 100644 --- a/go/p4/config/v1/p4info.pb.go +++ b/go/p4/config/v1/p4info.pb.go @@ -62,6 +62,7 @@ const ( P4Ids_DIRECT_METER P4Ids_Prefix = 21 P4Ids_REGISTER P4Ids_Prefix = 22 P4Ids_DIGEST P4Ids_Prefix = 23 + P4Ids_GENERIC_TABLE P4Ids_Prefix = 24 // externs for other architectures (vendor extensions) P4Ids_OTHER_EXTERNS_START P4Ids_Prefix = 128 // max value for an unsigned 8-bit byte @@ -84,6 +85,7 @@ var ( 21: "DIRECT_METER", 22: "REGISTER", 23: "DIGEST", + 24: "GENERIC_TABLE", 128: "OTHER_EXTERNS_START", 255: "MAX", } @@ -101,6 +103,7 @@ var ( "DIRECT_METER": 21, "REGISTER": 22, "DIGEST": 23, + "GENERIC_TABLE": 24, "OTHER_EXTERNS_START": 128, "MAX": 255, } @@ -133,6 +136,56 @@ func (P4Ids_Prefix) EnumDescriptor() ([]byte, []int) { return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{3, 0} } +// The ID space is for Generic tables. In the Preamble ID, the MSB will be +// 0x18 but the next MSB is reserved for this enum. This shortens the ID +// space for tables in each type but it is still 64k (16 bits) for each table +type GenericTableType_Prefix int32 + +const ( + GenericTableType_GENERIC_TABLES_START GenericTableType_Prefix = 0 + // max value for an unsigned 8-bit byte + GenericTableType_MAX GenericTableType_Prefix = 255 +) + +// Enum value maps for GenericTableType_Prefix. +var ( + GenericTableType_Prefix_name = map[int32]string{ + 0: "GENERIC_TABLES_START", + 255: "MAX", + } + GenericTableType_Prefix_value = map[string]int32{ + "GENERIC_TABLES_START": 0, + "MAX": 255, + } +) + +func (x GenericTableType_Prefix) Enum() *GenericTableType_Prefix { + p := new(GenericTableType_Prefix) + *p = x + return p +} + +func (x GenericTableType_Prefix) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenericTableType_Prefix) Descriptor() protoreflect.EnumDescriptor { + return file_p4_config_v1_p4info_proto_enumTypes[1].Descriptor() +} + +func (GenericTableType_Prefix) Type() protoreflect.EnumType { + return &file_p4_config_v1_p4info_proto_enumTypes[1] +} + +func (x GenericTableType_Prefix) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenericTableType_Prefix.Descriptor instead. +func (GenericTableType_Prefix) EnumDescriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{4, 0} +} + type MatchField_MatchType int32 const ( @@ -175,11 +228,11 @@ func (x MatchField_MatchType) String() string { } func (MatchField_MatchType) Descriptor() protoreflect.EnumDescriptor { - return file_p4_config_v1_p4info_proto_enumTypes[1].Descriptor() + return file_p4_config_v1_p4info_proto_enumTypes[2].Descriptor() } func (MatchField_MatchType) Type() protoreflect.EnumType { - return &file_p4_config_v1_p4info_proto_enumTypes[1] + return &file_p4_config_v1_p4info_proto_enumTypes[2] } func (x MatchField_MatchType) Number() protoreflect.EnumNumber { @@ -188,7 +241,7 @@ func (x MatchField_MatchType) Number() protoreflect.EnumNumber { // Deprecated: Use MatchField_MatchType.Descriptor instead. func (MatchField_MatchType) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{7, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8, 0} } // this enum can be extended in the future with other behaviors, such as @@ -223,11 +276,11 @@ func (x Table_IdleTimeoutBehavior) String() string { } func (Table_IdleTimeoutBehavior) Descriptor() protoreflect.EnumDescriptor { - return file_p4_config_v1_p4info_proto_enumTypes[2].Descriptor() + return file_p4_config_v1_p4info_proto_enumTypes[3].Descriptor() } func (Table_IdleTimeoutBehavior) Type() protoreflect.EnumType { - return &file_p4_config_v1_p4info_proto_enumTypes[2] + return &file_p4_config_v1_p4info_proto_enumTypes[3] } func (x Table_IdleTimeoutBehavior) Number() protoreflect.EnumNumber { @@ -236,7 +289,7 @@ func (x Table_IdleTimeoutBehavior) Number() protoreflect.EnumNumber { // Deprecated: Use Table_IdleTimeoutBehavior.Descriptor instead. func (Table_IdleTimeoutBehavior) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9, 0} } type ActionRef_Scope int32 @@ -272,11 +325,11 @@ func (x ActionRef_Scope) String() string { } func (ActionRef_Scope) Descriptor() protoreflect.EnumDescriptor { - return file_p4_config_v1_p4info_proto_enumTypes[3].Descriptor() + return file_p4_config_v1_p4info_proto_enumTypes[4].Descriptor() } func (ActionRef_Scope) Type() protoreflect.EnumType { - return &file_p4_config_v1_p4info_proto_enumTypes[3] + return &file_p4_config_v1_p4info_proto_enumTypes[4] } func (x ActionRef_Scope) Number() protoreflect.EnumNumber { @@ -285,7 +338,7 @@ func (x ActionRef_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use ActionRef_Scope.Descriptor instead. func (ActionRef_Scope) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10, 0} } // Corresponds to 'type' constructor parameter for Counter / DirectCounter in @@ -326,11 +379,11 @@ func (x CounterSpec_Unit) String() string { } func (CounterSpec_Unit) Descriptor() protoreflect.EnumDescriptor { - return file_p4_config_v1_p4info_proto_enumTypes[4].Descriptor() + return file_p4_config_v1_p4info_proto_enumTypes[5].Descriptor() } func (CounterSpec_Unit) Type() protoreflect.EnumType { - return &file_p4_config_v1_p4info_proto_enumTypes[4] + return &file_p4_config_v1_p4info_proto_enumTypes[5] } func (x CounterSpec_Unit) Number() protoreflect.EnumNumber { @@ -339,7 +392,7 @@ func (x CounterSpec_Unit) Number() protoreflect.EnumNumber { // Deprecated: Use CounterSpec_Unit.Descriptor instead. func (CounterSpec_Unit) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{13, 0} } // Corresponds to 'type' constructor parameter for Meter / DirectMeter in PSA @@ -376,11 +429,11 @@ func (x MeterSpec_Unit) String() string { } func (MeterSpec_Unit) Descriptor() protoreflect.EnumDescriptor { - return file_p4_config_v1_p4info_proto_enumTypes[5].Descriptor() + return file_p4_config_v1_p4info_proto_enumTypes[6].Descriptor() } func (MeterSpec_Unit) Type() protoreflect.EnumType { - return &file_p4_config_v1_p4info_proto_enumTypes[5] + return &file_p4_config_v1_p4info_proto_enumTypes[6] } func (x MeterSpec_Unit) Number() protoreflect.EnumNumber { @@ -389,7 +442,114 @@ func (x MeterSpec_Unit) Number() protoreflect.EnumNumber { // Deprecated: Use MeterSpec_Unit.Descriptor instead. func (MeterSpec_Unit) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{15, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{16, 0} +} + +type GenericMatchField_MatchType int32 + +const ( + GenericMatchField_UNSPECIFIED GenericMatchField_MatchType = 0 + GenericMatchField_EXACT GenericMatchField_MatchType = 2 + GenericMatchField_LPM GenericMatchField_MatchType = 3 + GenericMatchField_TERNARY GenericMatchField_MatchType = 4 + GenericMatchField_RANGE GenericMatchField_MatchType = 5 + GenericMatchField_OPTIONAL GenericMatchField_MatchType = 6 +) + +// Enum value maps for GenericMatchField_MatchType. +var ( + GenericMatchField_MatchType_name = map[int32]string{ + 0: "UNSPECIFIED", + 2: "EXACT", + 3: "LPM", + 4: "TERNARY", + 5: "RANGE", + 6: "OPTIONAL", + } + GenericMatchField_MatchType_value = map[string]int32{ + "UNSPECIFIED": 0, + "EXACT": 2, + "LPM": 3, + "TERNARY": 4, + "RANGE": 5, + "OPTIONAL": 6, + } +) + +func (x GenericMatchField_MatchType) Enum() *GenericMatchField_MatchType { + p := new(GenericMatchField_MatchType) + *p = x + return p +} + +func (x GenericMatchField_MatchType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenericMatchField_MatchType) Descriptor() protoreflect.EnumDescriptor { + return file_p4_config_v1_p4info_proto_enumTypes[7].Descriptor() +} + +func (GenericMatchField_MatchType) Type() protoreflect.EnumType { + return &file_p4_config_v1_p4info_proto_enumTypes[7] +} + +func (x GenericMatchField_MatchType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenericMatchField_MatchType.Descriptor instead. +func (GenericMatchField_MatchType) EnumDescriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{23, 0} +} + +type UnionRef_Scope int32 + +const ( + UnionRef_TABLE_AND_DEFAULT UnionRef_Scope = 0 + UnionRef_TABLE_ONLY UnionRef_Scope = 1 + UnionRef_DEFAULT_ONLY UnionRef_Scope = 2 +) + +// Enum value maps for UnionRef_Scope. +var ( + UnionRef_Scope_name = map[int32]string{ + 0: "TABLE_AND_DEFAULT", + 1: "TABLE_ONLY", + 2: "DEFAULT_ONLY", + } + UnionRef_Scope_value = map[string]int32{ + "TABLE_AND_DEFAULT": 0, + "TABLE_ONLY": 1, + "DEFAULT_ONLY": 2, + } +) + +func (x UnionRef_Scope) Enum() *UnionRef_Scope { + p := new(UnionRef_Scope) + *p = x + return p +} + +func (x UnionRef_Scope) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UnionRef_Scope) Descriptor() protoreflect.EnumDescriptor { + return file_p4_config_v1_p4info_proto_enumTypes[8].Descriptor() +} + +func (UnionRef_Scope) Type() protoreflect.EnumType { + return &file_p4_config_v1_p4info_proto_enumTypes[8] +} + +func (x UnionRef_Scope) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UnionRef_Scope.Descriptor instead. +func (UnionRef_Scope) EnumDescriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{24, 0} } type P4Info struct { @@ -409,6 +569,8 @@ type P4Info struct { ValueSets []*ValueSet `protobuf:"bytes,10,rep,name=value_sets,json=valueSets,proto3" json:"value_sets,omitempty"` Registers []*Register `protobuf:"bytes,11,rep,name=registers,proto3" json:"registers,omitempty"` Digests []*Digest `protobuf:"bytes,12,rep,name=digests,proto3" json:"digests,omitempty"` + GenericTables []*GenericTable `protobuf:"bytes,13,rep,name=generic_tables,json=genericTables,proto3" json:"generic_tables,omitempty"` + Unions []*Union `protobuf:"bytes,14,rep,name=unions,proto3" json:"unions,omitempty"` Externs []*Extern `protobuf:"bytes,100,rep,name=externs,proto3" json:"externs,omitempty"` TypeInfo *P4TypeInfo `protobuf:"bytes,200,opt,name=type_info,json=typeInfo,proto3" json:"type_info,omitempty"` } @@ -529,6 +691,20 @@ func (x *P4Info) GetDigests() []*Digest { return nil } +func (x *P4Info) GetGenericTables() []*GenericTable { + if x != nil { + return x.GenericTables + } + return nil +} + +func (x *P4Info) GetUnions() []*Union { + if x != nil { + return x.Unions + } + return nil +} + func (x *P4Info) GetExterns() []*Extern { if x != nil { return x.Externs @@ -774,6 +950,45 @@ func (*P4Ids) Descriptor() ([]byte, []int) { return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{3} } +// A subtype of P4IDs for GenericTables +type GenericTableType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GenericTableType) Reset() { + *x = GenericTableType{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericTableType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericTableType) ProtoMessage() {} + +func (x *GenericTableType) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericTableType.ProtoReflect.Descriptor instead. +func (*GenericTableType) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{4} +} + type Preamble struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -811,7 +1026,7 @@ type Preamble struct { func (x *Preamble) Reset() { *x = Preamble{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[4] + mi := &file_p4_config_v1_p4info_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +1039,7 @@ func (x *Preamble) String() string { func (*Preamble) ProtoMessage() {} func (x *Preamble) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[4] + mi := &file_p4_config_v1_p4info_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +1052,7 @@ func (x *Preamble) ProtoReflect() protoreflect.Message { // Deprecated: Use Preamble.ProtoReflect.Descriptor instead. func (*Preamble) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{4} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{5} } func (x *Preamble) GetId() uint32 { @@ -905,7 +1120,7 @@ type Extern struct { func (x *Extern) Reset() { *x = Extern{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[5] + mi := &file_p4_config_v1_p4info_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -918,7 +1133,7 @@ func (x *Extern) String() string { func (*Extern) ProtoMessage() {} func (x *Extern) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[5] + mi := &file_p4_config_v1_p4info_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -931,7 +1146,7 @@ func (x *Extern) ProtoReflect() protoreflect.Message { // Deprecated: Use Extern.ProtoReflect.Descriptor instead. func (*Extern) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{5} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{6} } func (x *Extern) GetExternTypeId() uint32 { @@ -969,7 +1184,7 @@ type ExternInstance struct { func (x *ExternInstance) Reset() { *x = ExternInstance{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[6] + mi := &file_p4_config_v1_p4info_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1197,7 @@ func (x *ExternInstance) String() string { func (*ExternInstance) ProtoMessage() {} func (x *ExternInstance) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[6] + mi := &file_p4_config_v1_p4info_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1210,7 @@ func (x *ExternInstance) ProtoReflect() protoreflect.Message { // Deprecated: Use ExternInstance.ProtoReflect.Descriptor instead. func (*ExternInstance) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{6} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{7} } func (x *ExternInstance) GetPreamble() *Preamble { @@ -1039,7 +1254,7 @@ type MatchField struct { func (x *MatchField) Reset() { *x = MatchField{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[7] + mi := &file_p4_config_v1_p4info_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1052,7 +1267,7 @@ func (x *MatchField) String() string { func (*MatchField) ProtoMessage() {} func (x *MatchField) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[7] + mi := &file_p4_config_v1_p4info_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1065,7 +1280,7 @@ func (x *MatchField) ProtoReflect() protoreflect.Message { // Deprecated: Use MatchField.ProtoReflect.Descriptor instead. func (*MatchField) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{7} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8} } func (x *MatchField) GetId() uint32 { @@ -1209,7 +1424,7 @@ type Table struct { func (x *Table) Reset() { *x = Table{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[8] + mi := &file_p4_config_v1_p4info_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1222,7 +1437,7 @@ func (x *Table) String() string { func (*Table) ProtoMessage() {} func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[8] + mi := &file_p4_config_v1_p4info_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1235,7 +1450,7 @@ func (x *Table) ProtoReflect() protoreflect.Message { // Deprecated: Use Table.ProtoReflect.Descriptor instead. func (*Table) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9} } func (x *Table) GetPreamble() *Preamble { @@ -1333,7 +1548,7 @@ type ActionRef struct { func (x *ActionRef) Reset() { *x = ActionRef{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[9] + mi := &file_p4_config_v1_p4info_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1346,7 +1561,7 @@ func (x *ActionRef) String() string { func (*ActionRef) ProtoMessage() {} func (x *ActionRef) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[9] + mi := &file_p4_config_v1_p4info_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1359,7 +1574,7 @@ func (x *ActionRef) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionRef.ProtoReflect.Descriptor instead. func (*ActionRef) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10} } func (x *ActionRef) GetId() uint32 { @@ -1409,7 +1624,7 @@ type Action struct { func (x *Action) Reset() { *x = Action{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[10] + mi := &file_p4_config_v1_p4info_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1422,7 +1637,7 @@ func (x *Action) String() string { func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[10] + mi := &file_p4_config_v1_p4info_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1435,7 +1650,7 @@ func (x *Action) ProtoReflect() protoreflect.Message { // Deprecated: Use Action.ProtoReflect.Descriptor instead. func (*Action) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11} } func (x *Action) GetPreamble() *Preamble { @@ -1481,7 +1696,7 @@ type ActionProfile struct { func (x *ActionProfile) Reset() { *x = ActionProfile{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[11] + mi := &file_p4_config_v1_p4info_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1494,7 +1709,7 @@ func (x *ActionProfile) String() string { func (*ActionProfile) ProtoMessage() {} func (x *ActionProfile) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[11] + mi := &file_p4_config_v1_p4info_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1507,7 +1722,7 @@ func (x *ActionProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionProfile.ProtoReflect.Descriptor instead. func (*ActionProfile) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12} } func (x *ActionProfile) GetPreamble() *Preamble { @@ -1595,7 +1810,7 @@ type CounterSpec struct { func (x *CounterSpec) Reset() { *x = CounterSpec{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[12] + mi := &file_p4_config_v1_p4info_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1608,7 +1823,7 @@ func (x *CounterSpec) String() string { func (*CounterSpec) ProtoMessage() {} func (x *CounterSpec) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[12] + mi := &file_p4_config_v1_p4info_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1621,7 +1836,7 @@ func (x *CounterSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use CounterSpec.ProtoReflect.Descriptor instead. func (*CounterSpec) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{13} } func (x *CounterSpec) GetUnit() CounterSpec_Unit { @@ -1647,7 +1862,7 @@ type Counter struct { func (x *Counter) Reset() { *x = Counter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[13] + mi := &file_p4_config_v1_p4info_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1660,7 +1875,7 @@ func (x *Counter) String() string { func (*Counter) ProtoMessage() {} func (x *Counter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[13] + mi := &file_p4_config_v1_p4info_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1673,7 +1888,7 @@ func (x *Counter) ProtoReflect() protoreflect.Message { // Deprecated: Use Counter.ProtoReflect.Descriptor instead. func (*Counter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{13} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{14} } func (x *Counter) GetPreamble() *Preamble { @@ -1718,7 +1933,7 @@ type DirectCounter struct { func (x *DirectCounter) Reset() { *x = DirectCounter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[14] + mi := &file_p4_config_v1_p4info_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1731,7 +1946,7 @@ func (x *DirectCounter) String() string { func (*DirectCounter) ProtoMessage() {} func (x *DirectCounter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[14] + mi := &file_p4_config_v1_p4info_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1744,7 +1959,7 @@ func (x *DirectCounter) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectCounter.ProtoReflect.Descriptor instead. func (*DirectCounter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{14} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{15} } func (x *DirectCounter) GetPreamble() *Preamble { @@ -1779,7 +1994,7 @@ type MeterSpec struct { func (x *MeterSpec) Reset() { *x = MeterSpec{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[15] + mi := &file_p4_config_v1_p4info_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1792,7 +2007,7 @@ func (x *MeterSpec) String() string { func (*MeterSpec) ProtoMessage() {} func (x *MeterSpec) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[15] + mi := &file_p4_config_v1_p4info_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1805,7 +2020,7 @@ func (x *MeterSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MeterSpec.ProtoReflect.Descriptor instead. func (*MeterSpec) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{15} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{16} } func (x *MeterSpec) GetUnit() MeterSpec_Unit { @@ -1831,7 +2046,7 @@ type Meter struct { func (x *Meter) Reset() { *x = Meter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[16] + mi := &file_p4_config_v1_p4info_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1844,7 +2059,7 @@ func (x *Meter) String() string { func (*Meter) ProtoMessage() {} func (x *Meter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[16] + mi := &file_p4_config_v1_p4info_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1857,7 +2072,7 @@ func (x *Meter) ProtoReflect() protoreflect.Message { // Deprecated: Use Meter.ProtoReflect.Descriptor instead. func (*Meter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{16} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{17} } func (x *Meter) GetPreamble() *Preamble { @@ -1902,7 +2117,7 @@ type DirectMeter struct { func (x *DirectMeter) Reset() { *x = DirectMeter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[17] + mi := &file_p4_config_v1_p4info_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1915,7 +2130,7 @@ func (x *DirectMeter) String() string { func (*DirectMeter) ProtoMessage() {} func (x *DirectMeter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[17] + mi := &file_p4_config_v1_p4info_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1928,7 +2143,7 @@ func (x *DirectMeter) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectMeter.ProtoReflect.Descriptor instead. func (*DirectMeter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{17} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{18} } func (x *DirectMeter) GetPreamble() *Preamble { @@ -1974,7 +2189,7 @@ type ControllerPacketMetadata struct { func (x *ControllerPacketMetadata) Reset() { *x = ControllerPacketMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[18] + mi := &file_p4_config_v1_p4info_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1987,7 +2202,7 @@ func (x *ControllerPacketMetadata) String() string { func (*ControllerPacketMetadata) ProtoMessage() {} func (x *ControllerPacketMetadata) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[18] + mi := &file_p4_config_v1_p4info_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2000,7 +2215,7 @@ func (x *ControllerPacketMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerPacketMetadata.ProtoReflect.Descriptor instead. func (*ControllerPacketMetadata) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{18} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{19} } func (x *ControllerPacketMetadata) GetPreamble() *Preamble { @@ -2031,7 +2246,7 @@ type ValueSet struct { func (x *ValueSet) Reset() { *x = ValueSet{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[19] + mi := &file_p4_config_v1_p4info_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2044,7 +2259,7 @@ func (x *ValueSet) String() string { func (*ValueSet) ProtoMessage() {} func (x *ValueSet) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[19] + mi := &file_p4_config_v1_p4info_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2057,7 +2272,7 @@ func (x *ValueSet) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueSet.ProtoReflect.Descriptor instead. func (*ValueSet) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{19} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{20} } func (x *ValueSet) GetPreamble() *Preamble { @@ -2096,7 +2311,7 @@ type Register struct { func (x *Register) Reset() { *x = Register{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[20] + mi := &file_p4_config_v1_p4info_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2109,7 +2324,7 @@ func (x *Register) String() string { func (*Register) ProtoMessage() {} func (x *Register) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[20] + mi := &file_p4_config_v1_p4info_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2122,7 +2337,7 @@ func (x *Register) ProtoReflect() protoreflect.Message { // Deprecated: Use Register.ProtoReflect.Descriptor instead. func (*Register) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{20} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{21} } func (x *Register) GetPreamble() *Preamble { @@ -2165,7 +2380,7 @@ type Digest struct { func (x *Digest) Reset() { *x = Digest{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[21] + mi := &file_p4_config_v1_p4info_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2178,7 +2393,7 @@ func (x *Digest) String() string { func (*Digest) ProtoMessage() {} func (x *Digest) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[21] + mi := &file_p4_config_v1_p4info_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2191,19 +2406,460 @@ func (x *Digest) ProtoReflect() protoreflect.Message { // Deprecated: Use Digest.ProtoReflect.Descriptor instead. func (*Digest) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{21} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{22} } func (x *Digest) GetPreamble() *Preamble { if x != nil { return x.Preamble } - return nil + return nil +} + +func (x *Digest) GetTypeSpec() *P4DataTypeSpec { + if x != nil { + return x.TypeSpec + } + return nil +} + +type GenericMatchField struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + TypeSpec *GenericDataTypeSpec `protobuf:"bytes,3,opt,name=type_spec,json=typeSpec,proto3" json:"type_spec,omitempty"` + // Types that are assignable to Match: + // + // *GenericMatchField_MatchType_ + // *GenericMatchField_OtherMatchType + Match isGenericMatchField_Match `protobuf_oneof:"match"` + // Documentation of the match field + Doc *Documentation `protobuf:"bytes,6,opt,name=doc,proto3" json:"doc,omitempty"` + Annotations []string `protobuf:"bytes,7,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,8,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` + AnnotationLocations []*SourceLocation `protobuf:"bytes,9,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` +} + +func (x *GenericMatchField) Reset() { + *x = GenericMatchField{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericMatchField) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericMatchField) ProtoMessage() {} + +func (x *GenericMatchField) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericMatchField.ProtoReflect.Descriptor instead. +func (*GenericMatchField) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{23} +} + +func (x *GenericMatchField) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GenericMatchField) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenericMatchField) GetTypeSpec() *GenericDataTypeSpec { + if x != nil { + return x.TypeSpec + } + return nil +} + +func (m *GenericMatchField) GetMatch() isGenericMatchField_Match { + if m != nil { + return m.Match + } + return nil +} + +func (x *GenericMatchField) GetMatchType() GenericMatchField_MatchType { + if x, ok := x.GetMatch().(*GenericMatchField_MatchType_); ok { + return x.MatchType + } + return GenericMatchField_UNSPECIFIED +} + +func (x *GenericMatchField) GetOtherMatchType() string { + if x, ok := x.GetMatch().(*GenericMatchField_OtherMatchType); ok { + return x.OtherMatchType + } + return "" +} + +func (x *GenericMatchField) GetDoc() *Documentation { + if x != nil { + return x.Doc + } + return nil +} + +func (x *GenericMatchField) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericMatchField) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +func (x *GenericMatchField) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +type isGenericMatchField_Match interface { + isGenericMatchField_Match() +} + +type GenericMatchField_MatchType_ struct { + MatchType GenericMatchField_MatchType `protobuf:"varint,4,opt,name=match_type,json=matchType,proto3,enum=p4.config.v1.GenericMatchField_MatchType,oneof"` +} + +type GenericMatchField_OtherMatchType struct { + // used for architecture-specific match types which are not part of the core + // P4 language or of the PSA architecture. + OtherMatchType string `protobuf:"bytes,5,opt,name=other_match_type,json=otherMatchType,proto3,oneof"` +} + +func (*GenericMatchField_MatchType_) isGenericMatchField_Match() {} + +func (*GenericMatchField_OtherMatchType) isGenericMatchField_Match() {} + +// used to list all possible unions in a Table +type UnionRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Scope UnionRef_Scope `protobuf:"varint,3,opt,name=scope,proto3,enum=p4.config.v1.UnionRef_Scope" json:"scope,omitempty"` + Annotations []string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,5,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,4,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *UnionRef) Reset() { + *x = UnionRef{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnionRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnionRef) ProtoMessage() {} + +func (x *UnionRef) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnionRef.ProtoReflect.Descriptor instead. +func (*UnionRef) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{24} +} + +func (x *UnionRef) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *UnionRef) GetScope() UnionRef_Scope { + if x != nil { + return x.Scope + } + return UnionRef_TABLE_AND_DEFAULT +} + +func (x *UnionRef) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *UnionRef) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *UnionRef) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type Union struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Preamble *Preamble `protobuf:"bytes,1,opt,name=preamble,proto3" json:"preamble,omitempty"` + Params []*Union_Param `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty"` +} + +func (x *Union) Reset() { + *x = Union{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Union) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Union) ProtoMessage() {} + +func (x *Union) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Union.ProtoReflect.Descriptor instead. +func (*Union) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{25} +} + +func (x *Union) GetPreamble() *Preamble { + if x != nil { + return x.Preamble + } + return nil +} + +func (x *Union) GetParams() []*Union_Param { + if x != nil { + return x.Params + } + return nil +} + +// All Tables of one type will be grouped in one message. +type GenericTable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeId uint32 `protobuf:"varint,1,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Properties []string `protobuf:"bytes,3,rep,name=properties,proto3" json:"properties,omitempty"` + Instances []*GenericTableInstance `protobuf:"bytes,4,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *GenericTable) Reset() { + *x = GenericTable{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericTable) ProtoMessage() {} + +func (x *GenericTable) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericTable.ProtoReflect.Descriptor instead. +func (*GenericTable) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{26} +} + +func (x *GenericTable) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *GenericTable) GetTypeName() string { + if x != nil { + return x.TypeName + } + return "" +} + +func (x *GenericTable) GetProperties() []string { + if x != nil { + return x.Properties + } + return nil +} + +func (x *GenericTable) GetInstances() []*GenericTableInstance { + if x != nil { + return x.Instances + } + return nil +} + +type GenericTableInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Preamble *Preamble `protobuf:"bytes,1,opt,name=preamble,proto3" json:"preamble,omitempty"` + GenericMatchFields []*GenericMatchField `protobuf:"bytes,2,rep,name=generic_match_fields,json=genericMatchFields,proto3" json:"generic_match_fields,omitempty"` + UnionRefs []*UnionRef `protobuf:"bytes,3,rep,name=union_refs,json=unionRefs,proto3" json:"union_refs,omitempty"` + // 0 (default value) means that the table does not have a const default action + ConstDefaultUnionId uint32 `protobuf:"varint,4,opt,name=const_default_union_id,json=constDefaultUnionId,proto3" json:"const_default_union_id,omitempty"` + Size int64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` // max number of entries in table + // architecture-specific table properties which are not part of the core P4 + // language or of the PSA architecture. + OtherProperties *anypb.Any `protobuf:"bytes,100,opt,name=other_properties,json=otherProperties,proto3" json:"other_properties,omitempty"` +} + +func (x *GenericTableInstance) Reset() { + *x = GenericTableInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericTableInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericTableInstance) ProtoMessage() {} + +func (x *GenericTableInstance) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericTableInstance.ProtoReflect.Descriptor instead. +func (*GenericTableInstance) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{27} +} + +func (x *GenericTableInstance) GetPreamble() *Preamble { + if x != nil { + return x.Preamble + } + return nil +} + +func (x *GenericTableInstance) GetGenericMatchFields() []*GenericMatchField { + if x != nil { + return x.GenericMatchFields + } + return nil +} + +func (x *GenericTableInstance) GetUnionRefs() []*UnionRef { + if x != nil { + return x.UnionRefs + } + return nil +} + +func (x *GenericTableInstance) GetConstDefaultUnionId() uint32 { + if x != nil { + return x.ConstDefaultUnionId + } + return 0 +} + +func (x *GenericTableInstance) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 } -func (x *Digest) GetTypeSpec() *P4DataTypeSpec { +func (x *GenericTableInstance) GetOtherProperties() *anypb.Any { if x != nil { - return x.TypeSpec + return x.OtherProperties } return nil } @@ -2230,7 +2886,7 @@ type Action_Param struct { func (x *Action_Param) Reset() { *x = Action_Param{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[22] + mi := &file_p4_config_v1_p4info_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2243,7 +2899,7 @@ func (x *Action_Param) String() string { func (*Action_Param) ProtoMessage() {} func (x *Action_Param) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[22] + mi := &file_p4_config_v1_p4info_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2256,7 +2912,7 @@ func (x *Action_Param) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_Param.ProtoReflect.Descriptor instead. func (*Action_Param) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11, 0} } func (x *Action_Param) GetId() uint32 { @@ -2327,7 +2983,7 @@ type ActionProfile_SumOfWeights struct { func (x *ActionProfile_SumOfWeights) Reset() { *x = ActionProfile_SumOfWeights{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[23] + mi := &file_p4_config_v1_p4info_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2340,7 +2996,7 @@ func (x *ActionProfile_SumOfWeights) String() string { func (*ActionProfile_SumOfWeights) ProtoMessage() {} func (x *ActionProfile_SumOfWeights) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[23] + mi := &file_p4_config_v1_p4info_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2353,7 +3009,7 @@ func (x *ActionProfile_SumOfWeights) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionProfile_SumOfWeights.ProtoReflect.Descriptor instead. func (*ActionProfile_SumOfWeights) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12, 0} } // indicates that `size` and `max_group_size` represent the maximum number @@ -2371,7 +3027,7 @@ type ActionProfile_SumOfMembers struct { func (x *ActionProfile_SumOfMembers) Reset() { *x = ActionProfile_SumOfMembers{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[24] + mi := &file_p4_config_v1_p4info_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2384,7 +3040,7 @@ func (x *ActionProfile_SumOfMembers) String() string { func (*ActionProfile_SumOfMembers) ProtoMessage() {} func (x *ActionProfile_SumOfMembers) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[24] + mi := &file_p4_config_v1_p4info_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2397,7 +3053,7 @@ func (x *ActionProfile_SumOfMembers) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionProfile_SumOfMembers.ProtoReflect.Descriptor instead. func (*ActionProfile_SumOfMembers) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11, 1} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12, 1} } func (x *ActionProfile_SumOfMembers) GetMaxMemberWeight() int32 { @@ -2429,7 +3085,7 @@ type ControllerPacketMetadata_Metadata struct { func (x *ControllerPacketMetadata_Metadata) Reset() { *x = ControllerPacketMetadata_Metadata{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[25] + mi := &file_p4_config_v1_p4info_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2442,7 +3098,7 @@ func (x *ControllerPacketMetadata_Metadata) String() string { func (*ControllerPacketMetadata_Metadata) ProtoMessage() {} func (x *ControllerPacketMetadata_Metadata) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[25] + mi := &file_p4_config_v1_p4info_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2455,7 +3111,7 @@ func (x *ControllerPacketMetadata_Metadata) ProtoReflect() protoreflect.Message // Deprecated: Use ControllerPacketMetadata_Metadata.ProtoReflect.Descriptor instead. func (*ControllerPacketMetadata_Metadata) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{18, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{19, 0} } func (x *ControllerPacketMetadata_Metadata) GetId() uint32 { @@ -2507,6 +3163,104 @@ func (x *ControllerPacketMetadata_Metadata) GetStructuredAnnotations() []*Struct return nil } +type Union_Param struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Annotations []string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty"` + TypeSpec *GenericDataTypeSpec `protobuf:"bytes,4,opt,name=type_spec,json=typeSpec,proto3" json:"type_spec,omitempty"` + // Documentation of the Param + Doc *Documentation `protobuf:"bytes,5,opt,name=doc,proto3" json:"doc,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,6,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,7,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` +} + +func (x *Union_Param) Reset() { + *x = Union_Param{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Union_Param) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Union_Param) ProtoMessage() {} + +func (x *Union_Param) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Union_Param.ProtoReflect.Descriptor instead. +func (*Union_Param) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{25, 0} +} + +func (x *Union_Param) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Union_Param) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Union_Param) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *Union_Param) GetTypeSpec() *GenericDataTypeSpec { + if x != nil { + return x.TypeSpec + } + return nil +} + +func (x *Union_Param) GetDoc() *Documentation { + if x != nil { + return x.Doc + } + return nil +} + +func (x *Union_Param) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +func (x *Union_Param) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + var File_p4_config_v1_p4info_proto protoreflect.FileDescriptor var file_p4_config_v1_p4info_proto_rawDesc = []byte{ @@ -2516,7 +3270,7 @@ var file_p4_config_v1_p4info_proto_rawDesc = []byte{ 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x70, 0x34, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x34, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xae, 0x06, 0x0a, 0x06, 0x50, 0x34, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x08, 0x70, + 0x22, 0x9e, 0x07, 0x0a, 0x06, 0x50, 0x34, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x6b, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6b, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x70, 0x6b, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, @@ -2560,7 +3314,14 @@ var file_p4_config_v1_p4info_proto_rawDesc = []byte{ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x52, 0x07, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x65, 0x78, 0x74, + 0x52, 0x07, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0d, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x06, + 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x07, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, @@ -2597,8 +3358,8 @@ var file_p4_config_v1_p4info_proto_rawDesc = []byte{ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x05, 0x50, 0x34, 0x49, 0x64, 0x73, 0x22, - 0xfd, 0x01, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9a, 0x02, 0x0a, 0x05, 0x50, 0x34, 0x49, 0x64, 0x73, 0x22, + 0x90, 0x02, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, @@ -2611,330 +3372,457 @@ var file_p4_config_v1_p4info_proto_rawDesc = []byte{ 0x45, 0x52, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x14, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x15, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0x16, 0x12, - 0x0a, 0x0a, 0x06, 0x44, 0x49, 0x47, 0x45, 0x53, 0x54, 0x10, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x4f, - 0x54, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x10, 0x80, 0x01, 0x12, 0x08, 0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, 0xff, 0x01, 0x22, - 0xc1, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x24, - 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x6e, 0x0a, 0x0e, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x08, - 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, - 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xd3, 0x04, 0x0a, 0x0a, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x43, 0x0a, 0x0a, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x6f, - 0x74, 0x68, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, - 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x36, 0x0a, 0x09, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x56, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x50, 0x4d, 0x10, - 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x04, 0x12, 0x09, - 0x0a, 0x05, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x22, 0x89, 0x05, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, - 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x3b, - 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0b, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x5b, 0x0a, - 0x15, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x65, - 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x65, 0x68, - 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, - 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x68, - 0x61, 0x73, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x3f, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, - 0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x22, 0x39, 0x0a, 0x13, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x54, - 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x54, 0x49, - 0x46, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x01, 0x22, 0xe0, 0x02, 0x0a, - 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x34, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x66, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x40, 0x0a, - 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x10, 0x0a, - 0x0c, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x22, - 0xef, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, - 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x32, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x1a, 0xfc, 0x02, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, - 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x36, - 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, - 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0xe5, 0x03, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, - 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x77, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x34, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x4f, 0x66, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, 0x53, 0x75, 0x6d, 0x4f, 0x66, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x55, 0x0a, 0x0c, 0x53, 0x75, 0x6d, 0x4f, 0x66, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x19, - 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, - 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x22, 0x7c, 0x0a, 0x0b, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x39, 0x0a, 0x04, - 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, - 0x04, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x22, 0xc3, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, - 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x0a, 0x0a, 0x06, 0x44, 0x49, 0x47, 0x45, 0x53, 0x54, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x47, + 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x18, 0x12, 0x18, + 0x0a, 0x13, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x53, 0x5f, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x80, 0x01, 0x12, 0x08, 0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, + 0xff, 0x01, 0x22, 0x40, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2c, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x12, 0x18, 0x0a, 0x14, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x03, 0x4d, 0x41, + 0x58, 0x10, 0xff, 0x01, 0x22, 0xc1, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, + 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, + 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x59, 0x0a, + 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, + 0x6e, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, + 0xd3, 0x04, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x43, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, + 0x63, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x56, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, + 0x03, 0x4c, 0x50, 0x4d, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, + 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x0c, + 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x89, 0x05, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, - 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x09, 0x4d, 0x65, - 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, - 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x2f, 0x0a, 0x04, 0x55, 0x6e, 0x69, - 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x22, 0xbf, 0x01, 0x0a, 0x05, 0x4d, - 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, - 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x01, 0x0a, - 0x0b, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, - 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, - 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, - 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xee, 0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0xd0, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x38, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x0a, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, + 0x0a, 0x13, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x5b, 0x0a, 0x15, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x64, 0x6c, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, + 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x68, 0x61, 0x73, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x13, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x0e, 0x0a, + 0x0a, 0x4e, 0x4f, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, + 0x0e, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, + 0x01, 0x22, 0xe0, 0x02, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x33, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, + 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x4e, + 0x4c, 0x59, 0x10, 0x02, 0x22, 0xef, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0xfc, 0x02, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, + 0x64, 0x6f, 0x63, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x08, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe5, 0x03, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, - 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x09, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, - 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x77, - 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, + 0x6f, 0x66, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x75, + 0x6d, 0x4f, 0x66, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, + 0x6d, 0x4f, 0x66, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, + 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, + 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0c, + 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, + 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x55, 0x0a, 0x0c, + 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x11, + 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x22, 0x7c, + 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, + 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, + 0x74, 0x22, 0x39, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x22, 0xc3, 0x01, 0x0a, + 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, + 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, + 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, + 0x6e, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x04, + 0x75, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x2f, + 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, + 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x22, + 0xbf, 0x01, 0x0a, 0x05, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, + 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x96, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x65, + 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xee, 0x03, 0x0a, 0x18, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xd0, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x08, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, - 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x09, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, - 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x22, 0xd0, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, + 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x77, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, + 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x22, 0xcd, 0x04, 0x0a, + 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, + 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4a, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, + 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, + 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x20, 0x0a, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x56, 0x0a, 0x09, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x41, + 0x43, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x50, 0x4d, 0x10, 0x03, 0x12, 0x0b, 0x0a, + 0x07, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, + 0x4c, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xde, 0x02, 0x0a, + 0x08, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, + 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x05, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x4e, + 0x44, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, + 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x22, 0xd9, 0x03, + 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0xe8, + 0x02, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, + 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, + 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x59, 0x0a, + 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x22, 0xde, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, + 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, + 0x51, 0x0a, 0x14, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x12, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x09, + 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x79, 0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2949,123 +3837,155 @@ func file_p4_config_v1_p4info_proto_rawDescGZIP() []byte { return file_p4_config_v1_p4info_proto_rawDescData } -var file_p4_config_v1_p4info_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_p4_config_v1_p4info_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_p4_config_v1_p4info_proto_enumTypes = make([]protoimpl.EnumInfo, 9) +var file_p4_config_v1_p4info_proto_msgTypes = make([]protoimpl.MessageInfo, 33) var file_p4_config_v1_p4info_proto_goTypes = []interface{}{ (P4Ids_Prefix)(0), // 0: p4.config.v1.P4Ids.Prefix - (MatchField_MatchType)(0), // 1: p4.config.v1.MatchField.MatchType - (Table_IdleTimeoutBehavior)(0), // 2: p4.config.v1.Table.IdleTimeoutBehavior - (ActionRef_Scope)(0), // 3: p4.config.v1.ActionRef.Scope - (CounterSpec_Unit)(0), // 4: p4.config.v1.CounterSpec.Unit - (MeterSpec_Unit)(0), // 5: p4.config.v1.MeterSpec.Unit - (*P4Info)(nil), // 6: p4.config.v1.P4Info - (*Documentation)(nil), // 7: p4.config.v1.Documentation - (*PkgInfo)(nil), // 8: p4.config.v1.PkgInfo - (*P4Ids)(nil), // 9: p4.config.v1.P4Ids - (*Preamble)(nil), // 10: p4.config.v1.Preamble - (*Extern)(nil), // 11: p4.config.v1.Extern - (*ExternInstance)(nil), // 12: p4.config.v1.ExternInstance - (*MatchField)(nil), // 13: p4.config.v1.MatchField - (*Table)(nil), // 14: p4.config.v1.Table - (*ActionRef)(nil), // 15: p4.config.v1.ActionRef - (*Action)(nil), // 16: p4.config.v1.Action - (*ActionProfile)(nil), // 17: p4.config.v1.ActionProfile - (*CounterSpec)(nil), // 18: p4.config.v1.CounterSpec - (*Counter)(nil), // 19: p4.config.v1.Counter - (*DirectCounter)(nil), // 20: p4.config.v1.DirectCounter - (*MeterSpec)(nil), // 21: p4.config.v1.MeterSpec - (*Meter)(nil), // 22: p4.config.v1.Meter - (*DirectMeter)(nil), // 23: p4.config.v1.DirectMeter - (*ControllerPacketMetadata)(nil), // 24: p4.config.v1.ControllerPacketMetadata - (*ValueSet)(nil), // 25: p4.config.v1.ValueSet - (*Register)(nil), // 26: p4.config.v1.Register - (*Digest)(nil), // 27: p4.config.v1.Digest - (*Action_Param)(nil), // 28: p4.config.v1.Action.Param - (*ActionProfile_SumOfWeights)(nil), // 29: p4.config.v1.ActionProfile.SumOfWeights - (*ActionProfile_SumOfMembers)(nil), // 30: p4.config.v1.ActionProfile.SumOfMembers - (*ControllerPacketMetadata_Metadata)(nil), // 31: p4.config.v1.ControllerPacketMetadata.Metadata - (*P4TypeInfo)(nil), // 32: p4.config.v1.P4TypeInfo - (*SourceLocation)(nil), // 33: p4.config.v1.SourceLocation - (*StructuredAnnotation)(nil), // 34: p4.config.v1.StructuredAnnotation - (*anypb.Any)(nil), // 35: google.protobuf.Any - (*P4NamedType)(nil), // 36: p4.config.v1.P4NamedType - (*P4DataTypeSpec)(nil), // 37: p4.config.v1.P4DataTypeSpec + (GenericTableType_Prefix)(0), // 1: p4.config.v1.GenericTableType.Prefix + (MatchField_MatchType)(0), // 2: p4.config.v1.MatchField.MatchType + (Table_IdleTimeoutBehavior)(0), // 3: p4.config.v1.Table.IdleTimeoutBehavior + (ActionRef_Scope)(0), // 4: p4.config.v1.ActionRef.Scope + (CounterSpec_Unit)(0), // 5: p4.config.v1.CounterSpec.Unit + (MeterSpec_Unit)(0), // 6: p4.config.v1.MeterSpec.Unit + (GenericMatchField_MatchType)(0), // 7: p4.config.v1.GenericMatchField.MatchType + (UnionRef_Scope)(0), // 8: p4.config.v1.UnionRef.Scope + (*P4Info)(nil), // 9: p4.config.v1.P4Info + (*Documentation)(nil), // 10: p4.config.v1.Documentation + (*PkgInfo)(nil), // 11: p4.config.v1.PkgInfo + (*P4Ids)(nil), // 12: p4.config.v1.P4Ids + (*GenericTableType)(nil), // 13: p4.config.v1.GenericTableType + (*Preamble)(nil), // 14: p4.config.v1.Preamble + (*Extern)(nil), // 15: p4.config.v1.Extern + (*ExternInstance)(nil), // 16: p4.config.v1.ExternInstance + (*MatchField)(nil), // 17: p4.config.v1.MatchField + (*Table)(nil), // 18: p4.config.v1.Table + (*ActionRef)(nil), // 19: p4.config.v1.ActionRef + (*Action)(nil), // 20: p4.config.v1.Action + (*ActionProfile)(nil), // 21: p4.config.v1.ActionProfile + (*CounterSpec)(nil), // 22: p4.config.v1.CounterSpec + (*Counter)(nil), // 23: p4.config.v1.Counter + (*DirectCounter)(nil), // 24: p4.config.v1.DirectCounter + (*MeterSpec)(nil), // 25: p4.config.v1.MeterSpec + (*Meter)(nil), // 26: p4.config.v1.Meter + (*DirectMeter)(nil), // 27: p4.config.v1.DirectMeter + (*ControllerPacketMetadata)(nil), // 28: p4.config.v1.ControllerPacketMetadata + (*ValueSet)(nil), // 29: p4.config.v1.ValueSet + (*Register)(nil), // 30: p4.config.v1.Register + (*Digest)(nil), // 31: p4.config.v1.Digest + (*GenericMatchField)(nil), // 32: p4.config.v1.GenericMatchField + (*UnionRef)(nil), // 33: p4.config.v1.UnionRef + (*Union)(nil), // 34: p4.config.v1.Union + (*GenericTable)(nil), // 35: p4.config.v1.GenericTable + (*GenericTableInstance)(nil), // 36: p4.config.v1.GenericTableInstance + (*Action_Param)(nil), // 37: p4.config.v1.Action.Param + (*ActionProfile_SumOfWeights)(nil), // 38: p4.config.v1.ActionProfile.SumOfWeights + (*ActionProfile_SumOfMembers)(nil), // 39: p4.config.v1.ActionProfile.SumOfMembers + (*ControllerPacketMetadata_Metadata)(nil), // 40: p4.config.v1.ControllerPacketMetadata.Metadata + (*Union_Param)(nil), // 41: p4.config.v1.Union.Param + (*P4TypeInfo)(nil), // 42: p4.config.v1.P4TypeInfo + (*SourceLocation)(nil), // 43: p4.config.v1.SourceLocation + (*StructuredAnnotation)(nil), // 44: p4.config.v1.StructuredAnnotation + (*anypb.Any)(nil), // 45: google.protobuf.Any + (*P4NamedType)(nil), // 46: p4.config.v1.P4NamedType + (*P4DataTypeSpec)(nil), // 47: p4.config.v1.P4DataTypeSpec + (*GenericDataTypeSpec)(nil), // 48: p4.config.v1.GenericDataTypeSpec } var file_p4_config_v1_p4info_proto_depIdxs = []int32{ - 8, // 0: p4.config.v1.P4Info.pkg_info:type_name -> p4.config.v1.PkgInfo - 14, // 1: p4.config.v1.P4Info.tables:type_name -> p4.config.v1.Table - 16, // 2: p4.config.v1.P4Info.actions:type_name -> p4.config.v1.Action - 17, // 3: p4.config.v1.P4Info.action_profiles:type_name -> p4.config.v1.ActionProfile - 19, // 4: p4.config.v1.P4Info.counters:type_name -> p4.config.v1.Counter - 20, // 5: p4.config.v1.P4Info.direct_counters:type_name -> p4.config.v1.DirectCounter - 22, // 6: p4.config.v1.P4Info.meters:type_name -> p4.config.v1.Meter - 23, // 7: p4.config.v1.P4Info.direct_meters:type_name -> p4.config.v1.DirectMeter - 24, // 8: p4.config.v1.P4Info.controller_packet_metadata:type_name -> p4.config.v1.ControllerPacketMetadata - 25, // 9: p4.config.v1.P4Info.value_sets:type_name -> p4.config.v1.ValueSet - 26, // 10: p4.config.v1.P4Info.registers:type_name -> p4.config.v1.Register - 27, // 11: p4.config.v1.P4Info.digests:type_name -> p4.config.v1.Digest - 11, // 12: p4.config.v1.P4Info.externs:type_name -> p4.config.v1.Extern - 32, // 13: p4.config.v1.P4Info.type_info:type_name -> p4.config.v1.P4TypeInfo - 7, // 14: p4.config.v1.PkgInfo.doc:type_name -> p4.config.v1.Documentation - 33, // 15: p4.config.v1.PkgInfo.annotation_locations:type_name -> p4.config.v1.SourceLocation - 34, // 16: p4.config.v1.PkgInfo.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 33, // 17: p4.config.v1.Preamble.annotation_locations:type_name -> p4.config.v1.SourceLocation - 7, // 18: p4.config.v1.Preamble.doc:type_name -> p4.config.v1.Documentation - 34, // 19: p4.config.v1.Preamble.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 12, // 20: p4.config.v1.Extern.instances:type_name -> p4.config.v1.ExternInstance - 10, // 21: p4.config.v1.ExternInstance.preamble:type_name -> p4.config.v1.Preamble - 35, // 22: p4.config.v1.ExternInstance.info:type_name -> google.protobuf.Any - 33, // 23: p4.config.v1.MatchField.annotation_locations:type_name -> p4.config.v1.SourceLocation - 1, // 24: p4.config.v1.MatchField.match_type:type_name -> p4.config.v1.MatchField.MatchType - 7, // 25: p4.config.v1.MatchField.doc:type_name -> p4.config.v1.Documentation - 36, // 26: p4.config.v1.MatchField.type_name:type_name -> p4.config.v1.P4NamedType - 34, // 27: p4.config.v1.MatchField.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 10, // 28: p4.config.v1.Table.preamble:type_name -> p4.config.v1.Preamble - 13, // 29: p4.config.v1.Table.match_fields:type_name -> p4.config.v1.MatchField - 15, // 30: p4.config.v1.Table.action_refs:type_name -> p4.config.v1.ActionRef - 2, // 31: p4.config.v1.Table.idle_timeout_behavior:type_name -> p4.config.v1.Table.IdleTimeoutBehavior - 35, // 32: p4.config.v1.Table.other_properties:type_name -> google.protobuf.Any - 3, // 33: p4.config.v1.ActionRef.scope:type_name -> p4.config.v1.ActionRef.Scope - 33, // 34: p4.config.v1.ActionRef.annotation_locations:type_name -> p4.config.v1.SourceLocation - 34, // 35: p4.config.v1.ActionRef.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 10, // 36: p4.config.v1.Action.preamble:type_name -> p4.config.v1.Preamble - 28, // 37: p4.config.v1.Action.params:type_name -> p4.config.v1.Action.Param - 10, // 38: p4.config.v1.ActionProfile.preamble:type_name -> p4.config.v1.Preamble - 29, // 39: p4.config.v1.ActionProfile.sum_of_weights:type_name -> p4.config.v1.ActionProfile.SumOfWeights - 30, // 40: p4.config.v1.ActionProfile.sum_of_members:type_name -> p4.config.v1.ActionProfile.SumOfMembers - 4, // 41: p4.config.v1.CounterSpec.unit:type_name -> p4.config.v1.CounterSpec.Unit - 10, // 42: p4.config.v1.Counter.preamble:type_name -> p4.config.v1.Preamble - 18, // 43: p4.config.v1.Counter.spec:type_name -> p4.config.v1.CounterSpec - 36, // 44: p4.config.v1.Counter.index_type_name:type_name -> p4.config.v1.P4NamedType - 10, // 45: p4.config.v1.DirectCounter.preamble:type_name -> p4.config.v1.Preamble - 18, // 46: p4.config.v1.DirectCounter.spec:type_name -> p4.config.v1.CounterSpec - 5, // 47: p4.config.v1.MeterSpec.unit:type_name -> p4.config.v1.MeterSpec.Unit - 10, // 48: p4.config.v1.Meter.preamble:type_name -> p4.config.v1.Preamble - 21, // 49: p4.config.v1.Meter.spec:type_name -> p4.config.v1.MeterSpec - 36, // 50: p4.config.v1.Meter.index_type_name:type_name -> p4.config.v1.P4NamedType - 10, // 51: p4.config.v1.DirectMeter.preamble:type_name -> p4.config.v1.Preamble - 21, // 52: p4.config.v1.DirectMeter.spec:type_name -> p4.config.v1.MeterSpec - 10, // 53: p4.config.v1.ControllerPacketMetadata.preamble:type_name -> p4.config.v1.Preamble - 31, // 54: p4.config.v1.ControllerPacketMetadata.metadata:type_name -> p4.config.v1.ControllerPacketMetadata.Metadata - 10, // 55: p4.config.v1.ValueSet.preamble:type_name -> p4.config.v1.Preamble - 13, // 56: p4.config.v1.ValueSet.match:type_name -> p4.config.v1.MatchField - 10, // 57: p4.config.v1.Register.preamble:type_name -> p4.config.v1.Preamble - 37, // 58: p4.config.v1.Register.type_spec:type_name -> p4.config.v1.P4DataTypeSpec - 36, // 59: p4.config.v1.Register.index_type_name:type_name -> p4.config.v1.P4NamedType - 10, // 60: p4.config.v1.Digest.preamble:type_name -> p4.config.v1.Preamble - 37, // 61: p4.config.v1.Digest.type_spec:type_name -> p4.config.v1.P4DataTypeSpec - 33, // 62: p4.config.v1.Action.Param.annotation_locations:type_name -> p4.config.v1.SourceLocation - 7, // 63: p4.config.v1.Action.Param.doc:type_name -> p4.config.v1.Documentation - 36, // 64: p4.config.v1.Action.Param.type_name:type_name -> p4.config.v1.P4NamedType - 34, // 65: p4.config.v1.Action.Param.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 33, // 66: p4.config.v1.ControllerPacketMetadata.Metadata.annotation_locations:type_name -> p4.config.v1.SourceLocation - 36, // 67: p4.config.v1.ControllerPacketMetadata.Metadata.type_name:type_name -> p4.config.v1.P4NamedType - 34, // 68: p4.config.v1.ControllerPacketMetadata.Metadata.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 69, // [69:69] is the sub-list for method output_type - 69, // [69:69] is the sub-list for method input_type - 69, // [69:69] is the sub-list for extension type_name - 69, // [69:69] is the sub-list for extension extendee - 0, // [0:69] is the sub-list for field type_name + 11, // 0: p4.config.v1.P4Info.pkg_info:type_name -> p4.config.v1.PkgInfo + 18, // 1: p4.config.v1.P4Info.tables:type_name -> p4.config.v1.Table + 20, // 2: p4.config.v1.P4Info.actions:type_name -> p4.config.v1.Action + 21, // 3: p4.config.v1.P4Info.action_profiles:type_name -> p4.config.v1.ActionProfile + 23, // 4: p4.config.v1.P4Info.counters:type_name -> p4.config.v1.Counter + 24, // 5: p4.config.v1.P4Info.direct_counters:type_name -> p4.config.v1.DirectCounter + 26, // 6: p4.config.v1.P4Info.meters:type_name -> p4.config.v1.Meter + 27, // 7: p4.config.v1.P4Info.direct_meters:type_name -> p4.config.v1.DirectMeter + 28, // 8: p4.config.v1.P4Info.controller_packet_metadata:type_name -> p4.config.v1.ControllerPacketMetadata + 29, // 9: p4.config.v1.P4Info.value_sets:type_name -> p4.config.v1.ValueSet + 30, // 10: p4.config.v1.P4Info.registers:type_name -> p4.config.v1.Register + 31, // 11: p4.config.v1.P4Info.digests:type_name -> p4.config.v1.Digest + 35, // 12: p4.config.v1.P4Info.generic_tables:type_name -> p4.config.v1.GenericTable + 34, // 13: p4.config.v1.P4Info.unions:type_name -> p4.config.v1.Union + 15, // 14: p4.config.v1.P4Info.externs:type_name -> p4.config.v1.Extern + 42, // 15: p4.config.v1.P4Info.type_info:type_name -> p4.config.v1.P4TypeInfo + 10, // 16: p4.config.v1.PkgInfo.doc:type_name -> p4.config.v1.Documentation + 43, // 17: p4.config.v1.PkgInfo.annotation_locations:type_name -> p4.config.v1.SourceLocation + 44, // 18: p4.config.v1.PkgInfo.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 43, // 19: p4.config.v1.Preamble.annotation_locations:type_name -> p4.config.v1.SourceLocation + 10, // 20: p4.config.v1.Preamble.doc:type_name -> p4.config.v1.Documentation + 44, // 21: p4.config.v1.Preamble.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 16, // 22: p4.config.v1.Extern.instances:type_name -> p4.config.v1.ExternInstance + 14, // 23: p4.config.v1.ExternInstance.preamble:type_name -> p4.config.v1.Preamble + 45, // 24: p4.config.v1.ExternInstance.info:type_name -> google.protobuf.Any + 43, // 25: p4.config.v1.MatchField.annotation_locations:type_name -> p4.config.v1.SourceLocation + 2, // 26: p4.config.v1.MatchField.match_type:type_name -> p4.config.v1.MatchField.MatchType + 10, // 27: p4.config.v1.MatchField.doc:type_name -> p4.config.v1.Documentation + 46, // 28: p4.config.v1.MatchField.type_name:type_name -> p4.config.v1.P4NamedType + 44, // 29: p4.config.v1.MatchField.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 14, // 30: p4.config.v1.Table.preamble:type_name -> p4.config.v1.Preamble + 17, // 31: p4.config.v1.Table.match_fields:type_name -> p4.config.v1.MatchField + 19, // 32: p4.config.v1.Table.action_refs:type_name -> p4.config.v1.ActionRef + 3, // 33: p4.config.v1.Table.idle_timeout_behavior:type_name -> p4.config.v1.Table.IdleTimeoutBehavior + 45, // 34: p4.config.v1.Table.other_properties:type_name -> google.protobuf.Any + 4, // 35: p4.config.v1.ActionRef.scope:type_name -> p4.config.v1.ActionRef.Scope + 43, // 36: p4.config.v1.ActionRef.annotation_locations:type_name -> p4.config.v1.SourceLocation + 44, // 37: p4.config.v1.ActionRef.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 14, // 38: p4.config.v1.Action.preamble:type_name -> p4.config.v1.Preamble + 37, // 39: p4.config.v1.Action.params:type_name -> p4.config.v1.Action.Param + 14, // 40: p4.config.v1.ActionProfile.preamble:type_name -> p4.config.v1.Preamble + 38, // 41: p4.config.v1.ActionProfile.sum_of_weights:type_name -> p4.config.v1.ActionProfile.SumOfWeights + 39, // 42: p4.config.v1.ActionProfile.sum_of_members:type_name -> p4.config.v1.ActionProfile.SumOfMembers + 5, // 43: p4.config.v1.CounterSpec.unit:type_name -> p4.config.v1.CounterSpec.Unit + 14, // 44: p4.config.v1.Counter.preamble:type_name -> p4.config.v1.Preamble + 22, // 45: p4.config.v1.Counter.spec:type_name -> p4.config.v1.CounterSpec + 46, // 46: p4.config.v1.Counter.index_type_name:type_name -> p4.config.v1.P4NamedType + 14, // 47: p4.config.v1.DirectCounter.preamble:type_name -> p4.config.v1.Preamble + 22, // 48: p4.config.v1.DirectCounter.spec:type_name -> p4.config.v1.CounterSpec + 6, // 49: p4.config.v1.MeterSpec.unit:type_name -> p4.config.v1.MeterSpec.Unit + 14, // 50: p4.config.v1.Meter.preamble:type_name -> p4.config.v1.Preamble + 25, // 51: p4.config.v1.Meter.spec:type_name -> p4.config.v1.MeterSpec + 46, // 52: p4.config.v1.Meter.index_type_name:type_name -> p4.config.v1.P4NamedType + 14, // 53: p4.config.v1.DirectMeter.preamble:type_name -> p4.config.v1.Preamble + 25, // 54: p4.config.v1.DirectMeter.spec:type_name -> p4.config.v1.MeterSpec + 14, // 55: p4.config.v1.ControllerPacketMetadata.preamble:type_name -> p4.config.v1.Preamble + 40, // 56: p4.config.v1.ControllerPacketMetadata.metadata:type_name -> p4.config.v1.ControllerPacketMetadata.Metadata + 14, // 57: p4.config.v1.ValueSet.preamble:type_name -> p4.config.v1.Preamble + 17, // 58: p4.config.v1.ValueSet.match:type_name -> p4.config.v1.MatchField + 14, // 59: p4.config.v1.Register.preamble:type_name -> p4.config.v1.Preamble + 47, // 60: p4.config.v1.Register.type_spec:type_name -> p4.config.v1.P4DataTypeSpec + 46, // 61: p4.config.v1.Register.index_type_name:type_name -> p4.config.v1.P4NamedType + 14, // 62: p4.config.v1.Digest.preamble:type_name -> p4.config.v1.Preamble + 47, // 63: p4.config.v1.Digest.type_spec:type_name -> p4.config.v1.P4DataTypeSpec + 48, // 64: p4.config.v1.GenericMatchField.type_spec:type_name -> p4.config.v1.GenericDataTypeSpec + 7, // 65: p4.config.v1.GenericMatchField.match_type:type_name -> p4.config.v1.GenericMatchField.MatchType + 10, // 66: p4.config.v1.GenericMatchField.doc:type_name -> p4.config.v1.Documentation + 44, // 67: p4.config.v1.GenericMatchField.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 43, // 68: p4.config.v1.GenericMatchField.annotation_locations:type_name -> p4.config.v1.SourceLocation + 8, // 69: p4.config.v1.UnionRef.scope:type_name -> p4.config.v1.UnionRef.Scope + 43, // 70: p4.config.v1.UnionRef.annotation_locations:type_name -> p4.config.v1.SourceLocation + 44, // 71: p4.config.v1.UnionRef.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 14, // 72: p4.config.v1.Union.preamble:type_name -> p4.config.v1.Preamble + 41, // 73: p4.config.v1.Union.params:type_name -> p4.config.v1.Union.Param + 36, // 74: p4.config.v1.GenericTable.instances:type_name -> p4.config.v1.GenericTableInstance + 14, // 75: p4.config.v1.GenericTableInstance.preamble:type_name -> p4.config.v1.Preamble + 32, // 76: p4.config.v1.GenericTableInstance.generic_match_fields:type_name -> p4.config.v1.GenericMatchField + 33, // 77: p4.config.v1.GenericTableInstance.union_refs:type_name -> p4.config.v1.UnionRef + 45, // 78: p4.config.v1.GenericTableInstance.other_properties:type_name -> google.protobuf.Any + 43, // 79: p4.config.v1.Action.Param.annotation_locations:type_name -> p4.config.v1.SourceLocation + 10, // 80: p4.config.v1.Action.Param.doc:type_name -> p4.config.v1.Documentation + 46, // 81: p4.config.v1.Action.Param.type_name:type_name -> p4.config.v1.P4NamedType + 44, // 82: p4.config.v1.Action.Param.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 43, // 83: p4.config.v1.ControllerPacketMetadata.Metadata.annotation_locations:type_name -> p4.config.v1.SourceLocation + 46, // 84: p4.config.v1.ControllerPacketMetadata.Metadata.type_name:type_name -> p4.config.v1.P4NamedType + 44, // 85: p4.config.v1.ControllerPacketMetadata.Metadata.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 48, // 86: p4.config.v1.Union.Param.type_spec:type_name -> p4.config.v1.GenericDataTypeSpec + 10, // 87: p4.config.v1.Union.Param.doc:type_name -> p4.config.v1.Documentation + 44, // 88: p4.config.v1.Union.Param.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 43, // 89: p4.config.v1.Union.Param.annotation_locations:type_name -> p4.config.v1.SourceLocation + 90, // [90:90] is the sub-list for method output_type + 90, // [90:90] is the sub-list for method input_type + 90, // [90:90] is the sub-list for extension type_name + 90, // [90:90] is the sub-list for extension extendee + 0, // [0:90] is the sub-list for field type_name } func init() { file_p4_config_v1_p4info_proto_init() } @@ -3124,7 +4044,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Preamble); i { + switch v := v.(*GenericTableType); i { case 0: return &v.state case 1: @@ -3136,7 +4056,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Extern); i { + switch v := v.(*Preamble); i { case 0: return &v.state case 1: @@ -3148,7 +4068,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExternInstance); i { + switch v := v.(*Extern); i { case 0: return &v.state case 1: @@ -3160,7 +4080,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MatchField); i { + switch v := v.(*ExternInstance); i { case 0: return &v.state case 1: @@ -3172,7 +4092,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { + switch v := v.(*MatchField); i { case 0: return &v.state case 1: @@ -3184,7 +4104,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionRef); i { + switch v := v.(*Table); i { case 0: return &v.state case 1: @@ -3196,7 +4116,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { + switch v := v.(*ActionRef); i { case 0: return &v.state case 1: @@ -3208,7 +4128,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfile); i { + switch v := v.(*Action); i { case 0: return &v.state case 1: @@ -3220,7 +4140,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CounterSpec); i { + switch v := v.(*ActionProfile); i { case 0: return &v.state case 1: @@ -3232,7 +4152,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Counter); i { + switch v := v.(*CounterSpec); i { case 0: return &v.state case 1: @@ -3244,7 +4164,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectCounter); i { + switch v := v.(*Counter); i { case 0: return &v.state case 1: @@ -3256,7 +4176,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MeterSpec); i { + switch v := v.(*DirectCounter); i { case 0: return &v.state case 1: @@ -3268,7 +4188,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Meter); i { + switch v := v.(*MeterSpec); i { case 0: return &v.state case 1: @@ -3280,7 +4200,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectMeter); i { + switch v := v.(*Meter); i { case 0: return &v.state case 1: @@ -3292,7 +4212,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerPacketMetadata); i { + switch v := v.(*DirectMeter); i { case 0: return &v.state case 1: @@ -3304,7 +4224,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueSet); i { + switch v := v.(*ControllerPacketMetadata); i { case 0: return &v.state case 1: @@ -3316,7 +4236,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Register); i { + switch v := v.(*ValueSet); i { case 0: return &v.state case 1: @@ -3328,7 +4248,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Digest); i { + switch v := v.(*Register); i { case 0: return &v.state case 1: @@ -3340,7 +4260,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_Param); i { + switch v := v.(*Digest); i { case 0: return &v.state case 1: @@ -3352,7 +4272,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfile_SumOfWeights); i { + switch v := v.(*GenericMatchField); i { case 0: return &v.state case 1: @@ -3364,7 +4284,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfile_SumOfMembers); i { + switch v := v.(*UnionRef); i { case 0: return &v.state case 1: @@ -3376,6 +4296,78 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Union); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericTable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericTableInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Action_Param); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProfile_SumOfWeights); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProfile_SumOfMembers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControllerPacketMetadata_Metadata); i { case 0: return &v.state @@ -3387,23 +4379,39 @@ func file_p4_config_v1_p4info_proto_init() { return nil } } + file_p4_config_v1_p4info_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Union_Param); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - file_p4_config_v1_p4info_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_p4_config_v1_p4info_proto_msgTypes[8].OneofWrappers = []interface{}{ (*MatchField_MatchType_)(nil), (*MatchField_OtherMatchType)(nil), } - file_p4_config_v1_p4info_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_p4_config_v1_p4info_proto_msgTypes[12].OneofWrappers = []interface{}{ (*ActionProfile_SumOfWeights_)(nil), (*ActionProfile_SumOfMembers_)(nil), } - file_p4_config_v1_p4info_proto_msgTypes[24].OneofWrappers = []interface{}{} + file_p4_config_v1_p4info_proto_msgTypes[23].OneofWrappers = []interface{}{ + (*GenericMatchField_MatchType_)(nil), + (*GenericMatchField_OtherMatchType)(nil), + } + file_p4_config_v1_p4info_proto_msgTypes[30].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_p4_config_v1_p4info_proto_rawDesc, - NumEnums: 6, - NumMessages: 26, + NumEnums: 9, + NumMessages: 33, NumExtensions: 0, NumServices: 0, }, diff --git a/go/p4/config/v1/p4types.pb.go b/go/p4/config/v1/p4types.pb.go index fff41698..52fe5b2b 100644 --- a/go/p4/config/v1/p4types.pb.go +++ b/go/p4/config/v1/p4types.pb.go @@ -1948,6 +1948,1375 @@ func (*P4NewTypeSpec_OriginalType) isP4NewTypeSpec_Representation() {} func (*P4NewTypeSpec_TranslatedType) isP4NewTypeSpec_Representation() {} +// Instead of duplicating the type spec for these +// every time the type is used, we include the type spec once in this +// GenericTypeInfo message and refer to the types by name in the +// GenericDataTypeSpec message. We also +// support annotations for these type specs which can be useful, e.g. to +// identify well-known headers (such as ipv4). +type GenericTypeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Structs map[string]*GenericStructTypeSpec `protobuf:"bytes,1,rep,name=structs,proto3" json:"structs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Lists map[string]*GenericListTypeSpec `protobuf:"bytes,2,rep,name=lists,proto3" json:"lists,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + UnorderedSets map[string]*GenericUnorderedSetTypeSpec `protobuf:"bytes,3,rep,name=unordered_sets,json=unorderedSets,proto3" json:"unordered_sets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Enums map[string]*GenericEnumTypeSpec `protobuf:"bytes,4,rep,name=enums,proto3" json:"enums,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SerializableEnums map[string]*GenericSerializableEnumTypeSpec `protobuf:"bytes,5,rep,name=serializable_enums,json=serializableEnums,proto3" json:"serializable_enums,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + NewTypes map[string]*GenericNewTypeSpec `protobuf:"bytes,6,rep,name=new_types,json=newTypes,proto3" json:"new_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GenericTypeInfo) Reset() { + *x = GenericTypeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericTypeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericTypeInfo) ProtoMessage() {} + +func (x *GenericTypeInfo) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericTypeInfo.ProtoReflect.Descriptor instead. +func (*GenericTypeInfo) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{26} +} + +func (x *GenericTypeInfo) GetStructs() map[string]*GenericStructTypeSpec { + if x != nil { + return x.Structs + } + return nil +} + +func (x *GenericTypeInfo) GetLists() map[string]*GenericListTypeSpec { + if x != nil { + return x.Lists + } + return nil +} + +func (x *GenericTypeInfo) GetUnorderedSets() map[string]*GenericUnorderedSetTypeSpec { + if x != nil { + return x.UnorderedSets + } + return nil +} + +func (x *GenericTypeInfo) GetEnums() map[string]*GenericEnumTypeSpec { + if x != nil { + return x.Enums + } + return nil +} + +func (x *GenericTypeInfo) GetSerializableEnums() map[string]*GenericSerializableEnumTypeSpec { + if x != nil { + return x.SerializableEnums + } + return nil +} + +func (x *GenericTypeInfo) GetNewTypes() map[string]*GenericNewTypeSpec { + if x != nil { + return x.NewTypes + } + return nil +} + +// Describes Generic Data types. +type GenericDataTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to TypeSpec: + // + // *GenericDataTypeSpec_Bitstring + // *GenericDataTypeSpec_Bool + // *GenericDataTypeSpec_Struct + // *GenericDataTypeSpec_List + // *GenericDataTypeSpec_UnorderedSet + // *GenericDataTypeSpec_String_ + // *GenericDataTypeSpec_Enum + // *GenericDataTypeSpec_SerializableEnum + // *GenericDataTypeSpec_NewType + TypeSpec isGenericDataTypeSpec_TypeSpec `protobuf_oneof:"type_spec"` +} + +func (x *GenericDataTypeSpec) Reset() { + *x = GenericDataTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericDataTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericDataTypeSpec) ProtoMessage() {} + +func (x *GenericDataTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericDataTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericDataTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{27} +} + +func (m *GenericDataTypeSpec) GetTypeSpec() isGenericDataTypeSpec_TypeSpec { + if m != nil { + return m.TypeSpec + } + return nil +} + +func (x *GenericDataTypeSpec) GetBitstring() *GenericBitstringLikeTypeSpec { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_Bitstring); ok { + return x.Bitstring + } + return nil +} + +func (x *GenericDataTypeSpec) GetBool() *GenericBoolType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_Bool); ok { + return x.Bool + } + return nil +} + +func (x *GenericDataTypeSpec) GetStruct() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_Struct); ok { + return x.Struct + } + return nil +} + +func (x *GenericDataTypeSpec) GetList() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_List); ok { + return x.List + } + return nil +} + +func (x *GenericDataTypeSpec) GetUnorderedSet() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_UnorderedSet); ok { + return x.UnorderedSet + } + return nil +} + +func (x *GenericDataTypeSpec) GetString_() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_String_); ok { + return x.String_ + } + return nil +} + +func (x *GenericDataTypeSpec) GetEnum() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_Enum); ok { + return x.Enum + } + return nil +} + +func (x *GenericDataTypeSpec) GetSerializableEnum() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_SerializableEnum); ok { + return x.SerializableEnum + } + return nil +} + +func (x *GenericDataTypeSpec) GetNewType() *GenericNamedType { + if x, ok := x.GetTypeSpec().(*GenericDataTypeSpec_NewType); ok { + return x.NewType + } + return nil +} + +type isGenericDataTypeSpec_TypeSpec interface { + isGenericDataTypeSpec_TypeSpec() +} + +type GenericDataTypeSpec_Bitstring struct { + Bitstring *GenericBitstringLikeTypeSpec `protobuf:"bytes,1,opt,name=bitstring,proto3,oneof"` +} + +type GenericDataTypeSpec_Bool struct { + Bool *GenericBoolType `protobuf:"bytes,2,opt,name=bool,proto3,oneof"` +} + +type GenericDataTypeSpec_Struct struct { + Struct *GenericNamedType `protobuf:"bytes,3,opt,name=struct,proto3,oneof"` +} + +type GenericDataTypeSpec_List struct { + List *GenericNamedType `protobuf:"bytes,4,opt,name=list,proto3,oneof"` +} + +type GenericDataTypeSpec_UnorderedSet struct { + UnorderedSet *GenericNamedType `protobuf:"bytes,5,opt,name=unordered_set,json=unorderedSet,proto3,oneof"` +} + +type GenericDataTypeSpec_String_ struct { + String_ *GenericNamedType `protobuf:"bytes,6,opt,name=string,proto3,oneof"` +} + +type GenericDataTypeSpec_Enum struct { + Enum *GenericNamedType `protobuf:"bytes,7,opt,name=enum,proto3,oneof"` +} + +type GenericDataTypeSpec_SerializableEnum struct { + SerializableEnum *GenericNamedType `protobuf:"bytes,8,opt,name=serializable_enum,json=serializableEnum,proto3,oneof"` +} + +type GenericDataTypeSpec_NewType struct { + NewType *GenericNamedType `protobuf:"bytes,9,opt,name=new_type,json=newType,proto3,oneof"` +} + +func (*GenericDataTypeSpec_Bitstring) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_Bool) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_Struct) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_List) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_UnorderedSet) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_String_) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_Enum) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_SerializableEnum) isGenericDataTypeSpec_TypeSpec() {} + +func (*GenericDataTypeSpec_NewType) isGenericDataTypeSpec_TypeSpec() {} + +type GenericNamedType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GenericNamedType) Reset() { + *x = GenericNamedType{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericNamedType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericNamedType) ProtoMessage() {} + +func (x *GenericNamedType) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericNamedType.ProtoReflect.Descriptor instead. +func (*GenericNamedType) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{28} +} + +func (x *GenericNamedType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type GenericBoolType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DefaultValue int32 `protobuf:"varint,1,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` +} + +func (x *GenericBoolType) Reset() { + *x = GenericBoolType{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericBoolType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericBoolType) ProtoMessage() {} + +func (x *GenericBoolType) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericBoolType.ProtoReflect.Descriptor instead. +func (*GenericBoolType) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{29} +} + +func (x *GenericBoolType) GetDefaultValue() int32 { + if x != nil { + return x.DefaultValue + } + return 0 +} + +type GenericBitstringLikeTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to TypeSpec: + // + // *GenericBitstringLikeTypeSpec_Bit + // *GenericBitstringLikeTypeSpec_Int + // *GenericBitstringLikeTypeSpec_Varbit + TypeSpec isGenericBitstringLikeTypeSpec_TypeSpec `protobuf_oneof:"type_spec"` + // Useful to identify well-known types, such as IP address or Ethernet MAC + // address. + Annotations []string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,5,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,6,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericBitstringLikeTypeSpec) Reset() { + *x = GenericBitstringLikeTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericBitstringLikeTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericBitstringLikeTypeSpec) ProtoMessage() {} + +func (x *GenericBitstringLikeTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericBitstringLikeTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericBitstringLikeTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{30} +} + +func (m *GenericBitstringLikeTypeSpec) GetTypeSpec() isGenericBitstringLikeTypeSpec_TypeSpec { + if m != nil { + return m.TypeSpec + } + return nil +} + +func (x *GenericBitstringLikeTypeSpec) GetBit() *GenericBitTypeSpec { + if x, ok := x.GetTypeSpec().(*GenericBitstringLikeTypeSpec_Bit); ok { + return x.Bit + } + return nil +} + +func (x *GenericBitstringLikeTypeSpec) GetInt() *GenericIntTypeSpec { + if x, ok := x.GetTypeSpec().(*GenericBitstringLikeTypeSpec_Int); ok { + return x.Int + } + return nil +} + +func (x *GenericBitstringLikeTypeSpec) GetVarbit() *GenericVarbitTypeSpec { + if x, ok := x.GetTypeSpec().(*GenericBitstringLikeTypeSpec_Varbit); ok { + return x.Varbit + } + return nil +} + +func (x *GenericBitstringLikeTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericBitstringLikeTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericBitstringLikeTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type isGenericBitstringLikeTypeSpec_TypeSpec interface { + isGenericBitstringLikeTypeSpec_TypeSpec() +} + +type GenericBitstringLikeTypeSpec_Bit struct { + Bit *GenericBitTypeSpec `protobuf:"bytes,1,opt,name=bit,proto3,oneof"` // bit +} + +type GenericBitstringLikeTypeSpec_Int struct { + Int *GenericIntTypeSpec `protobuf:"bytes,2,opt,name=int,proto3,oneof"` // int +} + +type GenericBitstringLikeTypeSpec_Varbit struct { + Varbit *GenericVarbitTypeSpec `protobuf:"bytes,3,opt,name=varbit,proto3,oneof"` // varbit +} + +func (*GenericBitstringLikeTypeSpec_Bit) isGenericBitstringLikeTypeSpec_TypeSpec() {} + +func (*GenericBitstringLikeTypeSpec_Int) isGenericBitstringLikeTypeSpec_TypeSpec() {} + +func (*GenericBitstringLikeTypeSpec_Varbit) isGenericBitstringLikeTypeSpec_TypeSpec() {} + +type GenericBitTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bitwidth int32 `protobuf:"varint,1,opt,name=bitwidth,proto3" json:"bitwidth,omitempty"` + DefaultValue []byte `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` +} + +func (x *GenericBitTypeSpec) Reset() { + *x = GenericBitTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericBitTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericBitTypeSpec) ProtoMessage() {} + +func (x *GenericBitTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericBitTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericBitTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{31} +} + +func (x *GenericBitTypeSpec) GetBitwidth() int32 { + if x != nil { + return x.Bitwidth + } + return 0 +} + +func (x *GenericBitTypeSpec) GetDefaultValue() []byte { + if x != nil { + return x.DefaultValue + } + return nil +} + +type GenericIntTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bitwidth int32 `protobuf:"varint,1,opt,name=bitwidth,proto3" json:"bitwidth,omitempty"` + DefaultValue []byte `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` +} + +func (x *GenericIntTypeSpec) Reset() { + *x = GenericIntTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericIntTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericIntTypeSpec) ProtoMessage() {} + +func (x *GenericIntTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericIntTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericIntTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{32} +} + +func (x *GenericIntTypeSpec) GetBitwidth() int32 { + if x != nil { + return x.Bitwidth + } + return 0 +} + +func (x *GenericIntTypeSpec) GetDefaultValue() []byte { + if x != nil { + return x.DefaultValue + } + return nil +} + +type GenericVarbitTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxBitwidth int32 `protobuf:"varint,1,opt,name=max_bitwidth,json=maxBitwidth,proto3" json:"max_bitwidth,omitempty"` + DefaultValue []byte `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` +} + +func (x *GenericVarbitTypeSpec) Reset() { + *x = GenericVarbitTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericVarbitTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericVarbitTypeSpec) ProtoMessage() {} + +func (x *GenericVarbitTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericVarbitTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericVarbitTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{33} +} + +func (x *GenericVarbitTypeSpec) GetMaxBitwidth() int32 { + if x != nil { + return x.MaxBitwidth + } + return 0 +} + +func (x *GenericVarbitTypeSpec) GetDefaultValue() []byte { + if x != nil { + return x.DefaultValue + } + return nil +} + +type GenericStructTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members []*GenericStructTypeSpec_Member `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` + Annotations []string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,5,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,6,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericStructTypeSpec) Reset() { + *x = GenericStructTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericStructTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericStructTypeSpec) ProtoMessage() {} + +func (x *GenericStructTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericStructTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericStructTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{34} +} + +func (x *GenericStructTypeSpec) GetMembers() []*GenericStructTypeSpec_Member { + if x != nil { + return x.Members + } + return nil +} + +func (x *GenericStructTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericStructTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericStructTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +// If a field is of type list +// ordered and duplicates allowed. +// If max_size and min_size are equal, then fixed size. +type GenericListTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ElementTypeSpec *GenericDataTypeSpec `protobuf:"bytes,1,opt,name=element_type_spec,json=elementTypeSpec,proto3" json:"element_type_spec,omitempty"` // The element_type + Annotations []string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + MinSize int32 `protobuf:"varint,4,opt,name=min_size,json=minSize,proto3" json:"min_size,omitempty"` // 0 if not present + MaxSize int32 `protobuf:"varint,5,opt,name=max_size,json=maxSize,proto3" json:"max_size,omitempty"` // no max size defined if not present + AnnotationLocations []*SourceLocation `protobuf:"bytes,6,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,7,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericListTypeSpec) Reset() { + *x = GenericListTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericListTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericListTypeSpec) ProtoMessage() {} + +func (x *GenericListTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericListTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericListTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{35} +} + +func (x *GenericListTypeSpec) GetElementTypeSpec() *GenericDataTypeSpec { + if x != nil { + return x.ElementTypeSpec + } + return nil +} + +func (x *GenericListTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericListTypeSpec) GetMinSize() int32 { + if x != nil { + return x.MinSize + } + return 0 +} + +func (x *GenericListTypeSpec) GetMaxSize() int32 { + if x != nil { + return x.MaxSize + } + return 0 +} + +func (x *GenericListTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericListTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +// If a field is of type "unordered_set" +// Unordered and duplicates not allowed +type GenericUnorderedSetTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ElementTypeSpec *GenericDataTypeSpec `protobuf:"bytes,1,opt,name=element_type_spec,json=elementTypeSpec,proto3" json:"element_type_spec,omitempty"` // The element_type + Annotations []string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + MinSize int32 `protobuf:"varint,4,opt,name=min_size,json=minSize,proto3" json:"min_size,omitempty"` // 0 if not present + MaxSize int32 `protobuf:"varint,5,opt,name=max_size,json=maxSize,proto3" json:"max_size,omitempty"` // no max size defined if not present + AnnotationLocations []*SourceLocation `protobuf:"bytes,6,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,7,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericUnorderedSetTypeSpec) Reset() { + *x = GenericUnorderedSetTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericUnorderedSetTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericUnorderedSetTypeSpec) ProtoMessage() {} + +func (x *GenericUnorderedSetTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericUnorderedSetTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericUnorderedSetTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{36} +} + +func (x *GenericUnorderedSetTypeSpec) GetElementTypeSpec() *GenericDataTypeSpec { + if x != nil { + return x.ElementTypeSpec + } + return nil +} + +func (x *GenericUnorderedSetTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericUnorderedSetTypeSpec) GetMinSize() int32 { + if x != nil { + return x.MinSize + } + return 0 +} + +func (x *GenericUnorderedSetTypeSpec) GetMaxSize() int32 { + if x != nil { + return x.MaxSize + } + return 0 +} + +func (x *GenericUnorderedSetTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericUnorderedSetTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type GenericStringSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + MinSize int32 `protobuf:"varint,3,opt,name=min_size,json=minSize,proto3" json:"min_size,omitempty"` // 0 if not present + MaxSize int32 `protobuf:"varint,4,opt,name=max_size,json=maxSize,proto3" json:"max_size,omitempty"` // no max size defined if not present + Annotations []string `protobuf:"bytes,5,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,6,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,7,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericStringSpec) Reset() { + *x = GenericStringSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericStringSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericStringSpec) ProtoMessage() {} + +func (x *GenericStringSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericStringSpec.ProtoReflect.Descriptor instead. +func (*GenericStringSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{37} +} + +func (x *GenericStringSpec) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenericStringSpec) GetDefaultValue() string { + if x != nil { + return x.DefaultValue + } + return "" +} + +func (x *GenericStringSpec) GetMinSize() int32 { + if x != nil { + return x.MinSize + } + return 0 +} + +func (x *GenericStringSpec) GetMaxSize() int32 { + if x != nil { + return x.MaxSize + } + return 0 +} + +func (x *GenericStringSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericStringSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericStringSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type GenericEnumTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members []*GenericEnumTypeSpec_Member `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` + Annotations []string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,3,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,4,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericEnumTypeSpec) Reset() { + *x = GenericEnumTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericEnumTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericEnumTypeSpec) ProtoMessage() {} + +func (x *GenericEnumTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericEnumTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericEnumTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{38} +} + +func (x *GenericEnumTypeSpec) GetMembers() []*GenericEnumTypeSpec_Member { + if x != nil { + return x.Members + } + return nil +} + +func (x *GenericEnumTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericEnumTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericEnumTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type GenericSerializableEnumTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnderlyingType *GenericBitTypeSpec `protobuf:"bytes,1,opt,name=underlying_type,json=underlyingType,proto3" json:"underlying_type,omitempty"` + Members []*GenericSerializableEnumTypeSpec_Member `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"` + Annotations []string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,4,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,5,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericSerializableEnumTypeSpec) Reset() { + *x = GenericSerializableEnumTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericSerializableEnumTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericSerializableEnumTypeSpec) ProtoMessage() {} + +func (x *GenericSerializableEnumTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericSerializableEnumTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericSerializableEnumTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{39} +} + +func (x *GenericSerializableEnumTypeSpec) GetUnderlyingType() *GenericBitTypeSpec { + if x != nil { + return x.UnderlyingType + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec) GetMembers() []*GenericSerializableEnumTypeSpec_Member { + if x != nil { + return x.Members + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +// User defined types +type GenericNewTypeTranslation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // the URI uniquely identifies the translation in order to enable the + // P4Runtime agent to perform value-mapping appropriately when required. It is + // recommended that the URI includes at least the P4 architecture name and the + // type name. In case of target specific types, target_name should be included + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // The object is either represented as an unsigned integer with a bitwidth of + // `sdn_bitwidth`, or as a string. + // + // Types that are assignable to SdnType: + // + // *GenericNewTypeTranslation_SdnBitwidth + // *GenericNewTypeTranslation_SdnString_ + SdnType isGenericNewTypeTranslation_SdnType `protobuf_oneof:"sdn_type"` +} + +func (x *GenericNewTypeTranslation) Reset() { + *x = GenericNewTypeTranslation{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericNewTypeTranslation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericNewTypeTranslation) ProtoMessage() {} + +func (x *GenericNewTypeTranslation) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericNewTypeTranslation.ProtoReflect.Descriptor instead. +func (*GenericNewTypeTranslation) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{40} +} + +func (x *GenericNewTypeTranslation) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (m *GenericNewTypeTranslation) GetSdnType() isGenericNewTypeTranslation_SdnType { + if m != nil { + return m.SdnType + } + return nil +} + +func (x *GenericNewTypeTranslation) GetSdnBitwidth() int32 { + if x, ok := x.GetSdnType().(*GenericNewTypeTranslation_SdnBitwidth); ok { + return x.SdnBitwidth + } + return 0 +} + +func (x *GenericNewTypeTranslation) GetSdnString() *GenericNewTypeTranslation_SdnString { + if x, ok := x.GetSdnType().(*GenericNewTypeTranslation_SdnString_); ok { + return x.SdnString + } + return nil +} + +type isGenericNewTypeTranslation_SdnType interface { + isGenericNewTypeTranslation_SdnType() +} + +type GenericNewTypeTranslation_SdnBitwidth struct { + SdnBitwidth int32 `protobuf:"varint,2,opt,name=sdn_bitwidth,json=sdnBitwidth,proto3,oneof"` +} + +type GenericNewTypeTranslation_SdnString_ struct { + SdnString *GenericNewTypeTranslation_SdnString `protobuf:"bytes,3,opt,name=sdn_string,json=sdnString,proto3,oneof"` +} + +func (*GenericNewTypeTranslation_SdnBitwidth) isGenericNewTypeTranslation_SdnType() {} + +func (*GenericNewTypeTranslation_SdnString_) isGenericNewTypeTranslation_SdnType() {} + +type GenericNewTypeSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Representation: + // + // *GenericNewTypeSpec_OriginalType + // *GenericNewTypeSpec_TranslatedType + Representation isGenericNewTypeSpec_Representation `protobuf_oneof:"representation"` + // for other annotations (not @p4runtime_translation) + Annotations []string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,5,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,4,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericNewTypeSpec) Reset() { + *x = GenericNewTypeSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericNewTypeSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericNewTypeSpec) ProtoMessage() {} + +func (x *GenericNewTypeSpec) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericNewTypeSpec.ProtoReflect.Descriptor instead. +func (*GenericNewTypeSpec) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{41} +} + +func (m *GenericNewTypeSpec) GetRepresentation() isGenericNewTypeSpec_Representation { + if m != nil { + return m.Representation + } + return nil +} + +func (x *GenericNewTypeSpec) GetOriginalType() *GenericDataTypeSpec { + if x, ok := x.GetRepresentation().(*GenericNewTypeSpec_OriginalType); ok { + return x.OriginalType + } + return nil +} + +func (x *GenericNewTypeSpec) GetTranslatedType() *GenericNewTypeTranslation { + if x, ok := x.GetRepresentation().(*GenericNewTypeSpec_TranslatedType); ok { + return x.TranslatedType + } + return nil +} + +func (x *GenericNewTypeSpec) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericNewTypeSpec) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericNewTypeSpec) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type isGenericNewTypeSpec_Representation interface { + isGenericNewTypeSpec_Representation() +} + +type GenericNewTypeSpec_OriginalType struct { + // if no @p4runtime_translation annotation present + OriginalType *GenericDataTypeSpec `protobuf:"bytes,1,opt,name=original_type,json=originalType,proto3,oneof"` +} + +type GenericNewTypeSpec_TranslatedType struct { + // if @p4runtime_translation annotation present + TranslatedType *GenericNewTypeTranslation `protobuf:"bytes,2,opt,name=translated_type,json=translatedType,proto3,oneof"` +} + +func (*GenericNewTypeSpec_OriginalType) isGenericNewTypeSpec_Representation() {} + +func (*GenericNewTypeSpec_TranslatedType) isGenericNewTypeSpec_Representation() {} + type P4StructTypeSpec_Member struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1960,7 +3329,7 @@ type P4StructTypeSpec_Member struct { func (x *P4StructTypeSpec_Member) Reset() { *x = P4StructTypeSpec_Member{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4types_proto_msgTypes[32] + mi := &file_p4_config_v1_p4types_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1973,7 +3342,7 @@ func (x *P4StructTypeSpec_Member) String() string { func (*P4StructTypeSpec_Member) ProtoMessage() {} func (x *P4StructTypeSpec_Member) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4types_proto_msgTypes[32] + mi := &file_p4_config_v1_p4types_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2015,7 +3384,7 @@ type P4HeaderTypeSpec_Member struct { func (x *P4HeaderTypeSpec_Member) Reset() { *x = P4HeaderTypeSpec_Member{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4types_proto_msgTypes[33] + mi := &file_p4_config_v1_p4types_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2028,7 +3397,7 @@ func (x *P4HeaderTypeSpec_Member) String() string { func (*P4HeaderTypeSpec_Member) ProtoMessage() {} func (x *P4HeaderTypeSpec_Member) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4types_proto_msgTypes[33] + mi := &file_p4_config_v1_p4types_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2070,7 +3439,7 @@ type P4HeaderUnionTypeSpec_Member struct { func (x *P4HeaderUnionTypeSpec_Member) Reset() { *x = P4HeaderUnionTypeSpec_Member{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4types_proto_msgTypes[34] + mi := &file_p4_config_v1_p4types_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2083,7 +3452,7 @@ func (x *P4HeaderUnionTypeSpec_Member) String() string { func (*P4HeaderUnionTypeSpec_Member) ProtoMessage() {} func (x *P4HeaderUnionTypeSpec_Member) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4types_proto_msgTypes[34] + mi := &file_p4_config_v1_p4types_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2129,7 +3498,7 @@ type P4EnumTypeSpec_Member struct { func (x *P4EnumTypeSpec_Member) Reset() { *x = P4EnumTypeSpec_Member{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4types_proto_msgTypes[35] + mi := &file_p4_config_v1_p4types_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2142,7 +3511,7 @@ func (x *P4EnumTypeSpec_Member) String() string { func (*P4EnumTypeSpec_Member) ProtoMessage() {} func (x *P4EnumTypeSpec_Member) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4types_proto_msgTypes[35] + mi := &file_p4_config_v1_p4types_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2203,7 +3572,7 @@ type P4SerializableEnumTypeSpec_Member struct { func (x *P4SerializableEnumTypeSpec_Member) Reset() { *x = P4SerializableEnumTypeSpec_Member{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4types_proto_msgTypes[36] + mi := &file_p4_config_v1_p4types_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2216,7 +3585,7 @@ func (x *P4SerializableEnumTypeSpec_Member) String() string { func (*P4SerializableEnumTypeSpec_Member) ProtoMessage() {} func (x *P4SerializableEnumTypeSpec_Member) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4types_proto_msgTypes[36] + mi := &file_p4_config_v1_p4types_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2276,7 +3645,7 @@ type P4NewTypeTranslation_SdnString struct { func (x *P4NewTypeTranslation_SdnString) Reset() { *x = P4NewTypeTranslation_SdnString{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4types_proto_msgTypes[37] + mi := &file_p4_config_v1_p4types_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2289,7 +3658,7 @@ func (x *P4NewTypeTranslation_SdnString) String() string { func (*P4NewTypeTranslation_SdnString) ProtoMessage() {} func (x *P4NewTypeTranslation_SdnString) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4types_proto_msgTypes[37] + mi := &file_p4_config_v1_p4types_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2305,6 +3674,277 @@ func (*P4NewTypeTranslation_SdnString) Descriptor() ([]byte, []int) { return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{24, 0} } +type GenericStructTypeSpec_Member struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + TypeSpec *GenericDataTypeSpec `protobuf:"bytes,3,opt,name=type_spec,json=typeSpec,proto3" json:"type_spec,omitempty"` +} + +func (x *GenericStructTypeSpec_Member) Reset() { + *x = GenericStructTypeSpec_Member{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericStructTypeSpec_Member) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericStructTypeSpec_Member) ProtoMessage() {} + +func (x *GenericStructTypeSpec_Member) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericStructTypeSpec_Member.ProtoReflect.Descriptor instead. +func (*GenericStructTypeSpec_Member) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{34, 0} +} + +func (x *GenericStructTypeSpec_Member) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GenericStructTypeSpec_Member) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenericStructTypeSpec_Member) GetTypeSpec() *GenericDataTypeSpec { + if x != nil { + return x.TypeSpec + } + return nil +} + +type GenericEnumTypeSpec_Member struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DefaultValue int32 `protobuf:"varint,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + Annotations []string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,4,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,5,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericEnumTypeSpec_Member) Reset() { + *x = GenericEnumTypeSpec_Member{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericEnumTypeSpec_Member) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericEnumTypeSpec_Member) ProtoMessage() {} + +func (x *GenericEnumTypeSpec_Member) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericEnumTypeSpec_Member.ProtoReflect.Descriptor instead. +func (*GenericEnumTypeSpec_Member) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{38, 0} +} + +func (x *GenericEnumTypeSpec_Member) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenericEnumTypeSpec_Member) GetDefaultValue() int32 { + if x != nil { + return x.DefaultValue + } + return 0 +} + +func (x *GenericEnumTypeSpec_Member) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericEnumTypeSpec_Member) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericEnumTypeSpec_Member) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type GenericSerializableEnumTypeSpec_Member struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + DefaultValue int32 `protobuf:"varint,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + Annotations []string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + AnnotationLocations []*SourceLocation `protobuf:"bytes,5,rep,name=annotation_locations,json=annotationLocations,proto3" json:"annotation_locations,omitempty"` + StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,6,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` +} + +func (x *GenericSerializableEnumTypeSpec_Member) Reset() { + *x = GenericSerializableEnumTypeSpec_Member{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericSerializableEnumTypeSpec_Member) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericSerializableEnumTypeSpec_Member) ProtoMessage() {} + +func (x *GenericSerializableEnumTypeSpec_Member) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericSerializableEnumTypeSpec_Member.ProtoReflect.Descriptor instead. +func (*GenericSerializableEnumTypeSpec_Member) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{39, 0} +} + +func (x *GenericSerializableEnumTypeSpec_Member) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenericSerializableEnumTypeSpec_Member) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec_Member) GetDefaultValue() int32 { + if x != nil { + return x.DefaultValue + } + return 0 +} + +func (x *GenericSerializableEnumTypeSpec_Member) GetAnnotations() []string { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec_Member) GetAnnotationLocations() []*SourceLocation { + if x != nil { + return x.AnnotationLocations + } + return nil +} + +func (x *GenericSerializableEnumTypeSpec_Member) GetStructuredAnnotations() []*StructuredAnnotation { + if x != nil { + return x.StructuredAnnotations + } + return nil +} + +type GenericNewTypeTranslation_SdnString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GenericNewTypeTranslation_SdnString) Reset() { + *x = GenericNewTypeTranslation_SdnString{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4types_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericNewTypeTranslation_SdnString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericNewTypeTranslation_SdnString) ProtoMessage() {} + +func (x *GenericNewTypeTranslation_SdnString) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4types_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericNewTypeTranslation_SdnString.ProtoReflect.Descriptor instead. +func (*GenericNewTypeTranslation_SdnString) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4types_proto_rawDescGZIP(), []int{40, 0} +} + var File_p4_config_v1_p4types_proto protoreflect.FileDescriptor var file_p4_config_v1_p4types_proto_rawDesc = []byte{ @@ -2709,11 +4349,375 @@ var file_p4_config_v1_p4types_proto_rawDesc = []byte{ 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x08, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x07, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x12, 0x3e, 0x0a, + 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x57, 0x0a, + 0x0e, 0x75, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x75, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x65, 0x64, 0x53, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x63, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, + 0x75, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x6e, + 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4e, 0x65, + 0x77, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6e, 0x65, 0x77, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x5f, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x6b, 0x0a, 0x12, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, + 0x53, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x5b, 0x0a, 0x0a, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, + 0x16, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x75, + 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x0d, 0x4e, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x77, 0x54, 0x79, + 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xd6, 0x04, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4a, 0x0a, 0x09, 0x62, 0x69, 0x74, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x42, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6b, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x09, 0x62, 0x69, 0x74, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x75, 0x6e, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x04, 0x65, + 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x12, 0x4d, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x10, + 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x3b, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, + 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x22, 0x26, 0x0a, 0x10, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x36, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x42, 0x6f, 0x6f, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa4, 0x03, 0x0a, 0x1c, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x42, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, + 0x69, 0x6b, 0x65, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x03, 0x62, + 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x42, + 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x03, 0x62, 0x69, + 0x74, 0x12, 0x34, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x76, 0x61, 0x72, 0x62, 0x69, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, + 0x72, 0x62, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x06, + 0x76, 0x61, 0x72, 0x62, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, + 0x63, 0x22, 0x55, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x42, 0x69, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x55, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, + 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x5f, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x72, 0x62, 0x69, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6d, 0x61, 0x78, 0x42, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x99, 0x03, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x6c, + 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x09, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x22, 0xe8, 0x02, 0x0a, + 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x0f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4f, 0x0a, 0x14, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xf0, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4f, + 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x11, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x69, 0x6e, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, + 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb9, 0x04, + 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x6e, 0x75, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8f, 0x02, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, + 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, + 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb2, 0x05, 0x0a, 0x1f, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x49, 0x0a, + 0x0f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x42, 0x69, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, + 0x79, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4e, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa5, 0x02, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbf, + 0x01, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x77, 0x54, 0x79, 0x70, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x23, + 0x0a, 0x0c, 0x73, 0x64, 0x6e, 0x5f, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x64, 0x6e, 0x42, 0x69, 0x74, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x12, 0x52, 0x0a, 0x0a, 0x73, 0x64, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x65, + 0x77, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x53, 0x64, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x09, 0x73, 0x64, + 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x1a, 0x0b, 0x0a, 0x09, 0x53, 0x64, 0x6e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x64, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x92, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x77, 0x54, + 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x48, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x4e, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2728,7 +4732,7 @@ func file_p4_config_v1_p4types_proto_rawDescGZIP() []byte { return file_p4_config_v1_p4types_proto_rawDescData } -var file_p4_config_v1_p4types_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_p4_config_v1_p4types_proto_msgTypes = make([]protoimpl.MessageInfo, 64) var file_p4_config_v1_p4types_proto_goTypes = []interface{}{ (*P4TypeInfo)(nil), // 0: p4.config.v1.P4TypeInfo (*P4DataTypeSpec)(nil), // 1: p4.config.v1.P4DataTypeSpec @@ -2756,92 +4760,172 @@ var file_p4_config_v1_p4types_proto_goTypes = []interface{}{ (*P4ErrorTypeSpec)(nil), // 23: p4.config.v1.P4ErrorTypeSpec (*P4NewTypeTranslation)(nil), // 24: p4.config.v1.P4NewTypeTranslation (*P4NewTypeSpec)(nil), // 25: p4.config.v1.P4NewTypeSpec - nil, // 26: p4.config.v1.P4TypeInfo.StructsEntry - nil, // 27: p4.config.v1.P4TypeInfo.HeadersEntry - nil, // 28: p4.config.v1.P4TypeInfo.HeaderUnionsEntry - nil, // 29: p4.config.v1.P4TypeInfo.EnumsEntry - nil, // 30: p4.config.v1.P4TypeInfo.SerializableEnumsEntry - nil, // 31: p4.config.v1.P4TypeInfo.NewTypesEntry - (*P4StructTypeSpec_Member)(nil), // 32: p4.config.v1.P4StructTypeSpec.Member - (*P4HeaderTypeSpec_Member)(nil), // 33: p4.config.v1.P4HeaderTypeSpec.Member - (*P4HeaderUnionTypeSpec_Member)(nil), // 34: p4.config.v1.P4HeaderUnionTypeSpec.Member - (*P4EnumTypeSpec_Member)(nil), // 35: p4.config.v1.P4EnumTypeSpec.Member - (*P4SerializableEnumTypeSpec_Member)(nil), // 36: p4.config.v1.P4SerializableEnumTypeSpec.Member - (*P4NewTypeTranslation_SdnString)(nil), // 37: p4.config.v1.P4NewTypeTranslation.SdnString + (*GenericTypeInfo)(nil), // 26: p4.config.v1.GenericTypeInfo + (*GenericDataTypeSpec)(nil), // 27: p4.config.v1.GenericDataTypeSpec + (*GenericNamedType)(nil), // 28: p4.config.v1.GenericNamedType + (*GenericBoolType)(nil), // 29: p4.config.v1.GenericBoolType + (*GenericBitstringLikeTypeSpec)(nil), // 30: p4.config.v1.GenericBitstringLikeTypeSpec + (*GenericBitTypeSpec)(nil), // 31: p4.config.v1.GenericBitTypeSpec + (*GenericIntTypeSpec)(nil), // 32: p4.config.v1.GenericIntTypeSpec + (*GenericVarbitTypeSpec)(nil), // 33: p4.config.v1.GenericVarbitTypeSpec + (*GenericStructTypeSpec)(nil), // 34: p4.config.v1.GenericStructTypeSpec + (*GenericListTypeSpec)(nil), // 35: p4.config.v1.GenericListTypeSpec + (*GenericUnorderedSetTypeSpec)(nil), // 36: p4.config.v1.GenericUnorderedSetTypeSpec + (*GenericStringSpec)(nil), // 37: p4.config.v1.GenericStringSpec + (*GenericEnumTypeSpec)(nil), // 38: p4.config.v1.GenericEnumTypeSpec + (*GenericSerializableEnumTypeSpec)(nil), // 39: p4.config.v1.GenericSerializableEnumTypeSpec + (*GenericNewTypeTranslation)(nil), // 40: p4.config.v1.GenericNewTypeTranslation + (*GenericNewTypeSpec)(nil), // 41: p4.config.v1.GenericNewTypeSpec + nil, // 42: p4.config.v1.P4TypeInfo.StructsEntry + nil, // 43: p4.config.v1.P4TypeInfo.HeadersEntry + nil, // 44: p4.config.v1.P4TypeInfo.HeaderUnionsEntry + nil, // 45: p4.config.v1.P4TypeInfo.EnumsEntry + nil, // 46: p4.config.v1.P4TypeInfo.SerializableEnumsEntry + nil, // 47: p4.config.v1.P4TypeInfo.NewTypesEntry + (*P4StructTypeSpec_Member)(nil), // 48: p4.config.v1.P4StructTypeSpec.Member + (*P4HeaderTypeSpec_Member)(nil), // 49: p4.config.v1.P4HeaderTypeSpec.Member + (*P4HeaderUnionTypeSpec_Member)(nil), // 50: p4.config.v1.P4HeaderUnionTypeSpec.Member + (*P4EnumTypeSpec_Member)(nil), // 51: p4.config.v1.P4EnumTypeSpec.Member + (*P4SerializableEnumTypeSpec_Member)(nil), // 52: p4.config.v1.P4SerializableEnumTypeSpec.Member + (*P4NewTypeTranslation_SdnString)(nil), // 53: p4.config.v1.P4NewTypeTranslation.SdnString + nil, // 54: p4.config.v1.GenericTypeInfo.StructsEntry + nil, // 55: p4.config.v1.GenericTypeInfo.ListsEntry + nil, // 56: p4.config.v1.GenericTypeInfo.UnorderedSetsEntry + nil, // 57: p4.config.v1.GenericTypeInfo.EnumsEntry + nil, // 58: p4.config.v1.GenericTypeInfo.SerializableEnumsEntry + nil, // 59: p4.config.v1.GenericTypeInfo.NewTypesEntry + (*GenericStructTypeSpec_Member)(nil), // 60: p4.config.v1.GenericStructTypeSpec.Member + (*GenericEnumTypeSpec_Member)(nil), // 61: p4.config.v1.GenericEnumTypeSpec.Member + (*GenericSerializableEnumTypeSpec_Member)(nil), // 62: p4.config.v1.GenericSerializableEnumTypeSpec.Member + (*GenericNewTypeTranslation_SdnString)(nil), // 63: p4.config.v1.GenericNewTypeTranslation.SdnString } var file_p4_config_v1_p4types_proto_depIdxs = []int32{ - 26, // 0: p4.config.v1.P4TypeInfo.structs:type_name -> p4.config.v1.P4TypeInfo.StructsEntry - 27, // 1: p4.config.v1.P4TypeInfo.headers:type_name -> p4.config.v1.P4TypeInfo.HeadersEntry - 28, // 2: p4.config.v1.P4TypeInfo.header_unions:type_name -> p4.config.v1.P4TypeInfo.HeaderUnionsEntry - 29, // 3: p4.config.v1.P4TypeInfo.enums:type_name -> p4.config.v1.P4TypeInfo.EnumsEntry - 23, // 4: p4.config.v1.P4TypeInfo.error:type_name -> p4.config.v1.P4ErrorTypeSpec - 30, // 5: p4.config.v1.P4TypeInfo.serializable_enums:type_name -> p4.config.v1.P4TypeInfo.SerializableEnumsEntry - 31, // 6: p4.config.v1.P4TypeInfo.new_types:type_name -> p4.config.v1.P4TypeInfo.NewTypesEntry - 5, // 7: p4.config.v1.P4DataTypeSpec.bitstring:type_name -> p4.config.v1.P4BitstringLikeTypeSpec - 3, // 8: p4.config.v1.P4DataTypeSpec.bool:type_name -> p4.config.v1.P4BoolType - 9, // 9: p4.config.v1.P4DataTypeSpec.tuple:type_name -> p4.config.v1.P4TupleTypeSpec - 2, // 10: p4.config.v1.P4DataTypeSpec.struct:type_name -> p4.config.v1.P4NamedType - 2, // 11: p4.config.v1.P4DataTypeSpec.header:type_name -> p4.config.v1.P4NamedType - 2, // 12: p4.config.v1.P4DataTypeSpec.header_union:type_name -> p4.config.v1.P4NamedType - 13, // 13: p4.config.v1.P4DataTypeSpec.header_stack:type_name -> p4.config.v1.P4HeaderStackTypeSpec - 14, // 14: p4.config.v1.P4DataTypeSpec.header_union_stack:type_name -> p4.config.v1.P4HeaderUnionStackTypeSpec - 2, // 15: p4.config.v1.P4DataTypeSpec.enum:type_name -> p4.config.v1.P4NamedType - 4, // 16: p4.config.v1.P4DataTypeSpec.error:type_name -> p4.config.v1.P4ErrorType - 2, // 17: p4.config.v1.P4DataTypeSpec.serializable_enum:type_name -> p4.config.v1.P4NamedType - 2, // 18: p4.config.v1.P4DataTypeSpec.new_type:type_name -> p4.config.v1.P4NamedType - 6, // 19: p4.config.v1.P4BitstringLikeTypeSpec.bit:type_name -> p4.config.v1.P4BitTypeSpec - 7, // 20: p4.config.v1.P4BitstringLikeTypeSpec.int:type_name -> p4.config.v1.P4IntTypeSpec - 8, // 21: p4.config.v1.P4BitstringLikeTypeSpec.varbit:type_name -> p4.config.v1.P4VarbitTypeSpec - 20, // 22: p4.config.v1.P4BitstringLikeTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 23: p4.config.v1.P4BitstringLikeTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 1, // 24: p4.config.v1.P4TupleTypeSpec.members:type_name -> p4.config.v1.P4DataTypeSpec - 32, // 25: p4.config.v1.P4StructTypeSpec.members:type_name -> p4.config.v1.P4StructTypeSpec.Member - 20, // 26: p4.config.v1.P4StructTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 27: p4.config.v1.P4StructTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 33, // 28: p4.config.v1.P4HeaderTypeSpec.members:type_name -> p4.config.v1.P4HeaderTypeSpec.Member - 20, // 29: p4.config.v1.P4HeaderTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 30: p4.config.v1.P4HeaderTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 34, // 31: p4.config.v1.P4HeaderUnionTypeSpec.members:type_name -> p4.config.v1.P4HeaderUnionTypeSpec.Member - 20, // 32: p4.config.v1.P4HeaderUnionTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 33: p4.config.v1.P4HeaderUnionTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 2, // 34: p4.config.v1.P4HeaderStackTypeSpec.header:type_name -> p4.config.v1.P4NamedType - 2, // 35: p4.config.v1.P4HeaderUnionStackTypeSpec.header_union:type_name -> p4.config.v1.P4NamedType - 17, // 36: p4.config.v1.KeyValuePair.value:type_name -> p4.config.v1.Expression - 15, // 37: p4.config.v1.KeyValuePairList.kv_pairs:type_name -> p4.config.v1.KeyValuePair - 17, // 38: p4.config.v1.ExpressionList.expressions:type_name -> p4.config.v1.Expression - 18, // 39: p4.config.v1.StructuredAnnotation.expression_list:type_name -> p4.config.v1.ExpressionList - 16, // 40: p4.config.v1.StructuredAnnotation.kv_pair_list:type_name -> p4.config.v1.KeyValuePairList - 20, // 41: p4.config.v1.StructuredAnnotation.source_location:type_name -> p4.config.v1.SourceLocation - 35, // 42: p4.config.v1.P4EnumTypeSpec.members:type_name -> p4.config.v1.P4EnumTypeSpec.Member - 20, // 43: p4.config.v1.P4EnumTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 44: p4.config.v1.P4EnumTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 6, // 45: p4.config.v1.P4SerializableEnumTypeSpec.underlying_type:type_name -> p4.config.v1.P4BitTypeSpec - 36, // 46: p4.config.v1.P4SerializableEnumTypeSpec.members:type_name -> p4.config.v1.P4SerializableEnumTypeSpec.Member - 20, // 47: p4.config.v1.P4SerializableEnumTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 48: p4.config.v1.P4SerializableEnumTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 37, // 49: p4.config.v1.P4NewTypeTranslation.sdn_string:type_name -> p4.config.v1.P4NewTypeTranslation.SdnString - 1, // 50: p4.config.v1.P4NewTypeSpec.original_type:type_name -> p4.config.v1.P4DataTypeSpec - 24, // 51: p4.config.v1.P4NewTypeSpec.translated_type:type_name -> p4.config.v1.P4NewTypeTranslation - 20, // 52: p4.config.v1.P4NewTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 53: p4.config.v1.P4NewTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 10, // 54: p4.config.v1.P4TypeInfo.StructsEntry.value:type_name -> p4.config.v1.P4StructTypeSpec - 11, // 55: p4.config.v1.P4TypeInfo.HeadersEntry.value:type_name -> p4.config.v1.P4HeaderTypeSpec - 12, // 56: p4.config.v1.P4TypeInfo.HeaderUnionsEntry.value:type_name -> p4.config.v1.P4HeaderUnionTypeSpec - 21, // 57: p4.config.v1.P4TypeInfo.EnumsEntry.value:type_name -> p4.config.v1.P4EnumTypeSpec - 22, // 58: p4.config.v1.P4TypeInfo.SerializableEnumsEntry.value:type_name -> p4.config.v1.P4SerializableEnumTypeSpec - 25, // 59: p4.config.v1.P4TypeInfo.NewTypesEntry.value:type_name -> p4.config.v1.P4NewTypeSpec - 1, // 60: p4.config.v1.P4StructTypeSpec.Member.type_spec:type_name -> p4.config.v1.P4DataTypeSpec - 5, // 61: p4.config.v1.P4HeaderTypeSpec.Member.type_spec:type_name -> p4.config.v1.P4BitstringLikeTypeSpec - 2, // 62: p4.config.v1.P4HeaderUnionTypeSpec.Member.header:type_name -> p4.config.v1.P4NamedType - 20, // 63: p4.config.v1.P4EnumTypeSpec.Member.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 64: p4.config.v1.P4EnumTypeSpec.Member.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 20, // 65: p4.config.v1.P4SerializableEnumTypeSpec.Member.annotation_locations:type_name -> p4.config.v1.SourceLocation - 19, // 66: p4.config.v1.P4SerializableEnumTypeSpec.Member.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 67, // [67:67] is the sub-list for method output_type - 67, // [67:67] is the sub-list for method input_type - 67, // [67:67] is the sub-list for extension type_name - 67, // [67:67] is the sub-list for extension extendee - 0, // [0:67] is the sub-list for field type_name + 42, // 0: p4.config.v1.P4TypeInfo.structs:type_name -> p4.config.v1.P4TypeInfo.StructsEntry + 43, // 1: p4.config.v1.P4TypeInfo.headers:type_name -> p4.config.v1.P4TypeInfo.HeadersEntry + 44, // 2: p4.config.v1.P4TypeInfo.header_unions:type_name -> p4.config.v1.P4TypeInfo.HeaderUnionsEntry + 45, // 3: p4.config.v1.P4TypeInfo.enums:type_name -> p4.config.v1.P4TypeInfo.EnumsEntry + 23, // 4: p4.config.v1.P4TypeInfo.error:type_name -> p4.config.v1.P4ErrorTypeSpec + 46, // 5: p4.config.v1.P4TypeInfo.serializable_enums:type_name -> p4.config.v1.P4TypeInfo.SerializableEnumsEntry + 47, // 6: p4.config.v1.P4TypeInfo.new_types:type_name -> p4.config.v1.P4TypeInfo.NewTypesEntry + 5, // 7: p4.config.v1.P4DataTypeSpec.bitstring:type_name -> p4.config.v1.P4BitstringLikeTypeSpec + 3, // 8: p4.config.v1.P4DataTypeSpec.bool:type_name -> p4.config.v1.P4BoolType + 9, // 9: p4.config.v1.P4DataTypeSpec.tuple:type_name -> p4.config.v1.P4TupleTypeSpec + 2, // 10: p4.config.v1.P4DataTypeSpec.struct:type_name -> p4.config.v1.P4NamedType + 2, // 11: p4.config.v1.P4DataTypeSpec.header:type_name -> p4.config.v1.P4NamedType + 2, // 12: p4.config.v1.P4DataTypeSpec.header_union:type_name -> p4.config.v1.P4NamedType + 13, // 13: p4.config.v1.P4DataTypeSpec.header_stack:type_name -> p4.config.v1.P4HeaderStackTypeSpec + 14, // 14: p4.config.v1.P4DataTypeSpec.header_union_stack:type_name -> p4.config.v1.P4HeaderUnionStackTypeSpec + 2, // 15: p4.config.v1.P4DataTypeSpec.enum:type_name -> p4.config.v1.P4NamedType + 4, // 16: p4.config.v1.P4DataTypeSpec.error:type_name -> p4.config.v1.P4ErrorType + 2, // 17: p4.config.v1.P4DataTypeSpec.serializable_enum:type_name -> p4.config.v1.P4NamedType + 2, // 18: p4.config.v1.P4DataTypeSpec.new_type:type_name -> p4.config.v1.P4NamedType + 6, // 19: p4.config.v1.P4BitstringLikeTypeSpec.bit:type_name -> p4.config.v1.P4BitTypeSpec + 7, // 20: p4.config.v1.P4BitstringLikeTypeSpec.int:type_name -> p4.config.v1.P4IntTypeSpec + 8, // 21: p4.config.v1.P4BitstringLikeTypeSpec.varbit:type_name -> p4.config.v1.P4VarbitTypeSpec + 20, // 22: p4.config.v1.P4BitstringLikeTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 23: p4.config.v1.P4BitstringLikeTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 1, // 24: p4.config.v1.P4TupleTypeSpec.members:type_name -> p4.config.v1.P4DataTypeSpec + 48, // 25: p4.config.v1.P4StructTypeSpec.members:type_name -> p4.config.v1.P4StructTypeSpec.Member + 20, // 26: p4.config.v1.P4StructTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 27: p4.config.v1.P4StructTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 49, // 28: p4.config.v1.P4HeaderTypeSpec.members:type_name -> p4.config.v1.P4HeaderTypeSpec.Member + 20, // 29: p4.config.v1.P4HeaderTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 30: p4.config.v1.P4HeaderTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 50, // 31: p4.config.v1.P4HeaderUnionTypeSpec.members:type_name -> p4.config.v1.P4HeaderUnionTypeSpec.Member + 20, // 32: p4.config.v1.P4HeaderUnionTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 33: p4.config.v1.P4HeaderUnionTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 2, // 34: p4.config.v1.P4HeaderStackTypeSpec.header:type_name -> p4.config.v1.P4NamedType + 2, // 35: p4.config.v1.P4HeaderUnionStackTypeSpec.header_union:type_name -> p4.config.v1.P4NamedType + 17, // 36: p4.config.v1.KeyValuePair.value:type_name -> p4.config.v1.Expression + 15, // 37: p4.config.v1.KeyValuePairList.kv_pairs:type_name -> p4.config.v1.KeyValuePair + 17, // 38: p4.config.v1.ExpressionList.expressions:type_name -> p4.config.v1.Expression + 18, // 39: p4.config.v1.StructuredAnnotation.expression_list:type_name -> p4.config.v1.ExpressionList + 16, // 40: p4.config.v1.StructuredAnnotation.kv_pair_list:type_name -> p4.config.v1.KeyValuePairList + 20, // 41: p4.config.v1.StructuredAnnotation.source_location:type_name -> p4.config.v1.SourceLocation + 51, // 42: p4.config.v1.P4EnumTypeSpec.members:type_name -> p4.config.v1.P4EnumTypeSpec.Member + 20, // 43: p4.config.v1.P4EnumTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 44: p4.config.v1.P4EnumTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 6, // 45: p4.config.v1.P4SerializableEnumTypeSpec.underlying_type:type_name -> p4.config.v1.P4BitTypeSpec + 52, // 46: p4.config.v1.P4SerializableEnumTypeSpec.members:type_name -> p4.config.v1.P4SerializableEnumTypeSpec.Member + 20, // 47: p4.config.v1.P4SerializableEnumTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 48: p4.config.v1.P4SerializableEnumTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 53, // 49: p4.config.v1.P4NewTypeTranslation.sdn_string:type_name -> p4.config.v1.P4NewTypeTranslation.SdnString + 1, // 50: p4.config.v1.P4NewTypeSpec.original_type:type_name -> p4.config.v1.P4DataTypeSpec + 24, // 51: p4.config.v1.P4NewTypeSpec.translated_type:type_name -> p4.config.v1.P4NewTypeTranslation + 20, // 52: p4.config.v1.P4NewTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 53: p4.config.v1.P4NewTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 54, // 54: p4.config.v1.GenericTypeInfo.structs:type_name -> p4.config.v1.GenericTypeInfo.StructsEntry + 55, // 55: p4.config.v1.GenericTypeInfo.lists:type_name -> p4.config.v1.GenericTypeInfo.ListsEntry + 56, // 56: p4.config.v1.GenericTypeInfo.unordered_sets:type_name -> p4.config.v1.GenericTypeInfo.UnorderedSetsEntry + 57, // 57: p4.config.v1.GenericTypeInfo.enums:type_name -> p4.config.v1.GenericTypeInfo.EnumsEntry + 58, // 58: p4.config.v1.GenericTypeInfo.serializable_enums:type_name -> p4.config.v1.GenericTypeInfo.SerializableEnumsEntry + 59, // 59: p4.config.v1.GenericTypeInfo.new_types:type_name -> p4.config.v1.GenericTypeInfo.NewTypesEntry + 30, // 60: p4.config.v1.GenericDataTypeSpec.bitstring:type_name -> p4.config.v1.GenericBitstringLikeTypeSpec + 29, // 61: p4.config.v1.GenericDataTypeSpec.bool:type_name -> p4.config.v1.GenericBoolType + 28, // 62: p4.config.v1.GenericDataTypeSpec.struct:type_name -> p4.config.v1.GenericNamedType + 28, // 63: p4.config.v1.GenericDataTypeSpec.list:type_name -> p4.config.v1.GenericNamedType + 28, // 64: p4.config.v1.GenericDataTypeSpec.unordered_set:type_name -> p4.config.v1.GenericNamedType + 28, // 65: p4.config.v1.GenericDataTypeSpec.string:type_name -> p4.config.v1.GenericNamedType + 28, // 66: p4.config.v1.GenericDataTypeSpec.enum:type_name -> p4.config.v1.GenericNamedType + 28, // 67: p4.config.v1.GenericDataTypeSpec.serializable_enum:type_name -> p4.config.v1.GenericNamedType + 28, // 68: p4.config.v1.GenericDataTypeSpec.new_type:type_name -> p4.config.v1.GenericNamedType + 31, // 69: p4.config.v1.GenericBitstringLikeTypeSpec.bit:type_name -> p4.config.v1.GenericBitTypeSpec + 32, // 70: p4.config.v1.GenericBitstringLikeTypeSpec.int:type_name -> p4.config.v1.GenericIntTypeSpec + 33, // 71: p4.config.v1.GenericBitstringLikeTypeSpec.varbit:type_name -> p4.config.v1.GenericVarbitTypeSpec + 20, // 72: p4.config.v1.GenericBitstringLikeTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 73: p4.config.v1.GenericBitstringLikeTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 60, // 74: p4.config.v1.GenericStructTypeSpec.members:type_name -> p4.config.v1.GenericStructTypeSpec.Member + 20, // 75: p4.config.v1.GenericStructTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 76: p4.config.v1.GenericStructTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 27, // 77: p4.config.v1.GenericListTypeSpec.element_type_spec:type_name -> p4.config.v1.GenericDataTypeSpec + 20, // 78: p4.config.v1.GenericListTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 79: p4.config.v1.GenericListTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 27, // 80: p4.config.v1.GenericUnorderedSetTypeSpec.element_type_spec:type_name -> p4.config.v1.GenericDataTypeSpec + 20, // 81: p4.config.v1.GenericUnorderedSetTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 82: p4.config.v1.GenericUnorderedSetTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 20, // 83: p4.config.v1.GenericStringSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 84: p4.config.v1.GenericStringSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 61, // 85: p4.config.v1.GenericEnumTypeSpec.members:type_name -> p4.config.v1.GenericEnumTypeSpec.Member + 20, // 86: p4.config.v1.GenericEnumTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 87: p4.config.v1.GenericEnumTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 31, // 88: p4.config.v1.GenericSerializableEnumTypeSpec.underlying_type:type_name -> p4.config.v1.GenericBitTypeSpec + 62, // 89: p4.config.v1.GenericSerializableEnumTypeSpec.members:type_name -> p4.config.v1.GenericSerializableEnumTypeSpec.Member + 20, // 90: p4.config.v1.GenericSerializableEnumTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 91: p4.config.v1.GenericSerializableEnumTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 63, // 92: p4.config.v1.GenericNewTypeTranslation.sdn_string:type_name -> p4.config.v1.GenericNewTypeTranslation.SdnString + 27, // 93: p4.config.v1.GenericNewTypeSpec.original_type:type_name -> p4.config.v1.GenericDataTypeSpec + 40, // 94: p4.config.v1.GenericNewTypeSpec.translated_type:type_name -> p4.config.v1.GenericNewTypeTranslation + 20, // 95: p4.config.v1.GenericNewTypeSpec.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 96: p4.config.v1.GenericNewTypeSpec.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 10, // 97: p4.config.v1.P4TypeInfo.StructsEntry.value:type_name -> p4.config.v1.P4StructTypeSpec + 11, // 98: p4.config.v1.P4TypeInfo.HeadersEntry.value:type_name -> p4.config.v1.P4HeaderTypeSpec + 12, // 99: p4.config.v1.P4TypeInfo.HeaderUnionsEntry.value:type_name -> p4.config.v1.P4HeaderUnionTypeSpec + 21, // 100: p4.config.v1.P4TypeInfo.EnumsEntry.value:type_name -> p4.config.v1.P4EnumTypeSpec + 22, // 101: p4.config.v1.P4TypeInfo.SerializableEnumsEntry.value:type_name -> p4.config.v1.P4SerializableEnumTypeSpec + 25, // 102: p4.config.v1.P4TypeInfo.NewTypesEntry.value:type_name -> p4.config.v1.P4NewTypeSpec + 1, // 103: p4.config.v1.P4StructTypeSpec.Member.type_spec:type_name -> p4.config.v1.P4DataTypeSpec + 5, // 104: p4.config.v1.P4HeaderTypeSpec.Member.type_spec:type_name -> p4.config.v1.P4BitstringLikeTypeSpec + 2, // 105: p4.config.v1.P4HeaderUnionTypeSpec.Member.header:type_name -> p4.config.v1.P4NamedType + 20, // 106: p4.config.v1.P4EnumTypeSpec.Member.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 107: p4.config.v1.P4EnumTypeSpec.Member.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 20, // 108: p4.config.v1.P4SerializableEnumTypeSpec.Member.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 109: p4.config.v1.P4SerializableEnumTypeSpec.Member.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 34, // 110: p4.config.v1.GenericTypeInfo.StructsEntry.value:type_name -> p4.config.v1.GenericStructTypeSpec + 35, // 111: p4.config.v1.GenericTypeInfo.ListsEntry.value:type_name -> p4.config.v1.GenericListTypeSpec + 36, // 112: p4.config.v1.GenericTypeInfo.UnorderedSetsEntry.value:type_name -> p4.config.v1.GenericUnorderedSetTypeSpec + 38, // 113: p4.config.v1.GenericTypeInfo.EnumsEntry.value:type_name -> p4.config.v1.GenericEnumTypeSpec + 39, // 114: p4.config.v1.GenericTypeInfo.SerializableEnumsEntry.value:type_name -> p4.config.v1.GenericSerializableEnumTypeSpec + 41, // 115: p4.config.v1.GenericTypeInfo.NewTypesEntry.value:type_name -> p4.config.v1.GenericNewTypeSpec + 27, // 116: p4.config.v1.GenericStructTypeSpec.Member.type_spec:type_name -> p4.config.v1.GenericDataTypeSpec + 20, // 117: p4.config.v1.GenericEnumTypeSpec.Member.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 118: p4.config.v1.GenericEnumTypeSpec.Member.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 20, // 119: p4.config.v1.GenericSerializableEnumTypeSpec.Member.annotation_locations:type_name -> p4.config.v1.SourceLocation + 19, // 120: p4.config.v1.GenericSerializableEnumTypeSpec.Member.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 121, // [121:121] is the sub-list for method output_type + 121, // [121:121] is the sub-list for method input_type + 121, // [121:121] is the sub-list for extension type_name + 121, // [121:121] is the sub-list for extension extendee + 0, // [0:121] is the sub-list for field type_name } func init() { file_p4_config_v1_p4types_proto_init() } @@ -3162,8 +5246,80 @@ func file_p4_config_v1_p4types_proto_init() { return nil } } + file_p4_config_v1_p4types_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericTypeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericDataTypeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericNamedType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericBoolType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericBitstringLikeTypeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericBitTypeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } file_p4_config_v1_p4types_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*P4StructTypeSpec_Member); i { + switch v := v.(*GenericIntTypeSpec); i { case 0: return &v.state case 1: @@ -3175,7 +5331,7 @@ func file_p4_config_v1_p4types_proto_init() { } } file_p4_config_v1_p4types_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*P4HeaderTypeSpec_Member); i { + switch v := v.(*GenericVarbitTypeSpec); i { case 0: return &v.state case 1: @@ -3187,7 +5343,7 @@ func file_p4_config_v1_p4types_proto_init() { } } file_p4_config_v1_p4types_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*P4HeaderUnionTypeSpec_Member); i { + switch v := v.(*GenericStructTypeSpec); i { case 0: return &v.state case 1: @@ -3199,7 +5355,7 @@ func file_p4_config_v1_p4types_proto_init() { } } file_p4_config_v1_p4types_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*P4EnumTypeSpec_Member); i { + switch v := v.(*GenericListTypeSpec); i { case 0: return &v.state case 1: @@ -3211,7 +5367,7 @@ func file_p4_config_v1_p4types_proto_init() { } } file_p4_config_v1_p4types_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*P4SerializableEnumTypeSpec_Member); i { + switch v := v.(*GenericUnorderedSetTypeSpec); i { case 0: return &v.state case 1: @@ -3223,6 +5379,126 @@ func file_p4_config_v1_p4types_proto_init() { } } file_p4_config_v1_p4types_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericStringSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericEnumTypeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericSerializableEnumTypeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericNewTypeTranslation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericNewTypeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*P4StructTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*P4HeaderTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*P4HeaderUnionTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*P4EnumTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*P4SerializableEnumTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*P4NewTypeTranslation_SdnString); i { case 0: return &v.state @@ -3234,6 +5510,54 @@ func file_p4_config_v1_p4types_proto_init() { return nil } } + file_p4_config_v1_p4types_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericStructTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericEnumTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericSerializableEnumTypeSpec_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4types_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericNewTypeTranslation_SdnString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_p4_config_v1_p4types_proto_msgTypes[1].OneofWrappers = []interface{}{ (*P4DataTypeSpec_Bitstring)(nil), @@ -3271,13 +5595,37 @@ func file_p4_config_v1_p4types_proto_init() { (*P4NewTypeSpec_OriginalType)(nil), (*P4NewTypeSpec_TranslatedType)(nil), } + file_p4_config_v1_p4types_proto_msgTypes[27].OneofWrappers = []interface{}{ + (*GenericDataTypeSpec_Bitstring)(nil), + (*GenericDataTypeSpec_Bool)(nil), + (*GenericDataTypeSpec_Struct)(nil), + (*GenericDataTypeSpec_List)(nil), + (*GenericDataTypeSpec_UnorderedSet)(nil), + (*GenericDataTypeSpec_String_)(nil), + (*GenericDataTypeSpec_Enum)(nil), + (*GenericDataTypeSpec_SerializableEnum)(nil), + (*GenericDataTypeSpec_NewType)(nil), + } + file_p4_config_v1_p4types_proto_msgTypes[30].OneofWrappers = []interface{}{ + (*GenericBitstringLikeTypeSpec_Bit)(nil), + (*GenericBitstringLikeTypeSpec_Int)(nil), + (*GenericBitstringLikeTypeSpec_Varbit)(nil), + } + file_p4_config_v1_p4types_proto_msgTypes[40].OneofWrappers = []interface{}{ + (*GenericNewTypeTranslation_SdnBitwidth)(nil), + (*GenericNewTypeTranslation_SdnString_)(nil), + } + file_p4_config_v1_p4types_proto_msgTypes[41].OneofWrappers = []interface{}{ + (*GenericNewTypeSpec_OriginalType)(nil), + (*GenericNewTypeSpec_TranslatedType)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_p4_config_v1_p4types_proto_rawDesc, NumEnums: 0, - NumMessages: 38, + NumMessages: 64, NumExtensions: 0, NumServices: 0, }, diff --git a/go/p4/v1/p4data.pb.go b/go/p4/v1/p4data.pb.go index f287fb09..aed4c583 100644 --- a/go/p4/v1/p4data.pb.go +++ b/go/p4/v1/p4data.pb.go @@ -569,6 +569,382 @@ func (x *P4HeaderUnionStack) GetEntries() []*P4HeaderUnion { return nil } +// //// Begin : GenericTables messages +type GenericData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Data: + // + // *GenericData_Bitstring + // *GenericData_Varbitstring + // *GenericData_Bool + // *GenericData_GenericStruct + // *GenericData_GenericList + // *GenericData_GenericUnorderedSet + // *GenericData_String_ + // *GenericData_Enum + // *GenericData_EnumValue + Data isGenericData_Data `protobuf_oneof:"data"` +} + +func (x *GenericData) Reset() { + *x = GenericData{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4data_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericData) ProtoMessage() {} + +func (x *GenericData) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4data_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericData.ProtoReflect.Descriptor instead. +func (*GenericData) Descriptor() ([]byte, []int) { + return file_p4_v1_p4data_proto_rawDescGZIP(), []int{7} +} + +func (m *GenericData) GetData() isGenericData_Data { + if m != nil { + return m.Data + } + return nil +} + +func (x *GenericData) GetBitstring() []byte { + if x, ok := x.GetData().(*GenericData_Bitstring); ok { + return x.Bitstring + } + return nil +} + +func (x *GenericData) GetVarbitstring() *GenericVarbit { + if x, ok := x.GetData().(*GenericData_Varbitstring); ok { + return x.Varbitstring + } + return nil +} + +func (x *GenericData) GetBool() bool { + if x, ok := x.GetData().(*GenericData_Bool); ok { + return x.Bool + } + return false +} + +func (x *GenericData) GetGenericStruct() *GenericStructLike { + if x, ok := x.GetData().(*GenericData_GenericStruct); ok { + return x.GenericStruct + } + return nil +} + +func (x *GenericData) GetGenericList() *GenericList { + if x, ok := x.GetData().(*GenericData_GenericList); ok { + return x.GenericList + } + return nil +} + +func (x *GenericData) GetGenericUnorderedSet() *GenericUnorderedSet { + if x, ok := x.GetData().(*GenericData_GenericUnorderedSet); ok { + return x.GenericUnorderedSet + } + return nil +} + +func (x *GenericData) GetString_() string { + if x, ok := x.GetData().(*GenericData_String_); ok { + return x.String_ + } + return "" +} + +func (x *GenericData) GetEnum() string { + if x, ok := x.GetData().(*GenericData_Enum); ok { + return x.Enum + } + return "" +} + +func (x *GenericData) GetEnumValue() []byte { + if x, ok := x.GetData().(*GenericData_EnumValue); ok { + return x.EnumValue + } + return nil +} + +type isGenericData_Data interface { + isGenericData_Data() +} + +type GenericData_Bitstring struct { + Bitstring []byte `protobuf:"bytes,1,opt,name=bitstring,proto3,oneof"` +} + +type GenericData_Varbitstring struct { + Varbitstring *GenericVarbit `protobuf:"bytes,2,opt,name=varbitstring,proto3,oneof"` +} + +type GenericData_Bool struct { + Bool bool `protobuf:"varint,3,opt,name=bool,proto3,oneof"` +} + +type GenericData_GenericStruct struct { + GenericStruct *GenericStructLike `protobuf:"bytes,4,opt,name=generic_struct,json=genericStruct,proto3,oneof"` // one struct +} + +type GenericData_GenericList struct { + GenericList *GenericList `protobuf:"bytes,5,opt,name=generic_list,json=genericList,proto3,oneof"` // list of bytes/bool/structs/strings/enums/enum_values. +} + +type GenericData_GenericUnorderedSet struct { + GenericUnorderedSet *GenericUnorderedSet `protobuf:"bytes,6,opt,name=generic_unordered_set,json=genericUnorderedSet,proto3,oneof"` // unordered_set of bytes/bool/structs/strings/enums/enum_values. +} + +type GenericData_String_ struct { + String_ string `protobuf:"bytes,7,opt,name=string,proto3,oneof"` // control plane arbitrary length string +} + +type GenericData_Enum struct { + Enum string `protobuf:"bytes,8,opt,name=enum,proto3,oneof"` // safe (non-serializable) enums only +} + +type GenericData_EnumValue struct { + EnumValue []byte `protobuf:"bytes,9,opt,name=enum_value,json=enumValue,proto3,oneof"` // serializable enums only +} + +func (*GenericData_Bitstring) isGenericData_Data() {} + +func (*GenericData_Varbitstring) isGenericData_Data() {} + +func (*GenericData_Bool) isGenericData_Data() {} + +func (*GenericData_GenericStruct) isGenericData_Data() {} + +func (*GenericData_GenericList) isGenericData_Data() {} + +func (*GenericData_GenericUnorderedSet) isGenericData_Data() {} + +func (*GenericData_String_) isGenericData_Data() {} + +func (*GenericData_Enum) isGenericData_Data() {} + +func (*GenericData_EnumValue) isGenericData_Data() {} + +type GenericStructLike struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members []*GenericData `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` +} + +func (x *GenericStructLike) Reset() { + *x = GenericStructLike{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4data_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericStructLike) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericStructLike) ProtoMessage() {} + +func (x *GenericStructLike) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4data_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericStructLike.ProtoReflect.Descriptor instead. +func (*GenericStructLike) Descriptor() ([]byte, []int) { + return file_p4_v1_p4data_proto_rawDescGZIP(), []int{8} +} + +func (x *GenericStructLike) GetMembers() []*GenericData { + if x != nil { + return x.Members + } + return nil +} + +type GenericList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members []*GenericData `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` +} + +func (x *GenericList) Reset() { + *x = GenericList{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4data_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericList) ProtoMessage() {} + +func (x *GenericList) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4data_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericList.ProtoReflect.Descriptor instead. +func (*GenericList) Descriptor() ([]byte, []int) { + return file_p4_v1_p4data_proto_rawDescGZIP(), []int{9} +} + +func (x *GenericList) GetMembers() []*GenericData { + if x != nil { + return x.Members + } + return nil +} + +type GenericUnorderedSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members []*GenericData `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` +} + +func (x *GenericUnorderedSet) Reset() { + *x = GenericUnorderedSet{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4data_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericUnorderedSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericUnorderedSet) ProtoMessage() {} + +func (x *GenericUnorderedSet) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4data_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericUnorderedSet.ProtoReflect.Descriptor instead. +func (*GenericUnorderedSet) Descriptor() ([]byte, []int) { + return file_p4_v1_p4data_proto_rawDescGZIP(), []int{10} +} + +func (x *GenericUnorderedSet) GetMembers() []*GenericData { + if x != nil { + return x.Members + } + return nil +} + +type GenericVarbit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bitstring []byte `protobuf:"bytes,1,opt,name=bitstring,proto3" json:"bitstring,omitempty"` + Bitwidth int32 `protobuf:"varint,2,opt,name=bitwidth,proto3" json:"bitwidth,omitempty"` // dynamic bitwidth of the field +} + +func (x *GenericVarbit) Reset() { + *x = GenericVarbit{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4data_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericVarbit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericVarbit) ProtoMessage() {} + +func (x *GenericVarbit) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4data_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericVarbit.ProtoReflect.Descriptor instead. +func (*GenericVarbit) Descriptor() ([]byte, []int) { + return file_p4_v1_p4data_proto_rawDescGZIP(), []int{11} +} + +func (x *GenericVarbit) GetBitstring() []byte { + if x != nil { + return x.Bitstring + } + return nil +} + +func (x *GenericVarbit) GetBitwidth() int32 { + if x != nil { + return x.Bitwidth + } + return 0 +} + var File_p4_v1_p4data_proto protoreflect.FileDescriptor var file_p4_v1_p4data_proto_rawDesc = []byte{ @@ -633,10 +1009,54 @@ var file_p4_v1_p4data_proto_rawDesc = []byte{ 0x65, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, - 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, - 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, - 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, + 0xa6, 0x03, 0x0a, 0x0b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1e, 0x0a, 0x09, 0x62, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x62, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, + 0x3a, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x62, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x72, 0x62, 0x69, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x76, + 0x61, 0x72, 0x62, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x62, + 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, + 0x6c, 0x12, 0x41, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, + 0x69, 0x6b, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x50, 0x0a, + 0x15, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x75, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x55, 0x6e, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x13, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, 0x74, 0x12, + 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, + 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, + 0x1f, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x41, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x6b, 0x65, 0x12, 0x2c, 0x0a, + 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x0b, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x55, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x53, 0x65, 0x74, 0x12, + 0x2c, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x49, 0x0a, + 0x0d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x72, 0x62, 0x69, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x62, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x09, 0x62, 0x69, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -651,15 +1071,20 @@ func file_p4_v1_p4data_proto_rawDescGZIP() []byte { return file_p4_v1_p4data_proto_rawDescData } -var file_p4_v1_p4data_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_p4_v1_p4data_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_p4_v1_p4data_proto_goTypes = []interface{}{ - (*P4Data)(nil), // 0: p4.v1.P4Data - (*P4Varbit)(nil), // 1: p4.v1.P4Varbit - (*P4StructLike)(nil), // 2: p4.v1.P4StructLike - (*P4Header)(nil), // 3: p4.v1.P4Header - (*P4HeaderUnion)(nil), // 4: p4.v1.P4HeaderUnion - (*P4HeaderStack)(nil), // 5: p4.v1.P4HeaderStack - (*P4HeaderUnionStack)(nil), // 6: p4.v1.P4HeaderUnionStack + (*P4Data)(nil), // 0: p4.v1.P4Data + (*P4Varbit)(nil), // 1: p4.v1.P4Varbit + (*P4StructLike)(nil), // 2: p4.v1.P4StructLike + (*P4Header)(nil), // 3: p4.v1.P4Header + (*P4HeaderUnion)(nil), // 4: p4.v1.P4HeaderUnion + (*P4HeaderStack)(nil), // 5: p4.v1.P4HeaderStack + (*P4HeaderUnionStack)(nil), // 6: p4.v1.P4HeaderUnionStack + (*GenericData)(nil), // 7: p4.v1.GenericData + (*GenericStructLike)(nil), // 8: p4.v1.GenericStructLike + (*GenericList)(nil), // 9: p4.v1.GenericList + (*GenericUnorderedSet)(nil), // 10: p4.v1.GenericUnorderedSet + (*GenericVarbit)(nil), // 11: p4.v1.GenericVarbit } var file_p4_v1_p4data_proto_depIdxs = []int32{ 1, // 0: p4.v1.P4Data.varbit:type_name -> p4.v1.P4Varbit @@ -673,11 +1098,18 @@ var file_p4_v1_p4data_proto_depIdxs = []int32{ 3, // 8: p4.v1.P4HeaderUnion.valid_header:type_name -> p4.v1.P4Header 3, // 9: p4.v1.P4HeaderStack.entries:type_name -> p4.v1.P4Header 4, // 10: p4.v1.P4HeaderUnionStack.entries:type_name -> p4.v1.P4HeaderUnion - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 11, // 11: p4.v1.GenericData.varbitstring:type_name -> p4.v1.GenericVarbit + 8, // 12: p4.v1.GenericData.generic_struct:type_name -> p4.v1.GenericStructLike + 9, // 13: p4.v1.GenericData.generic_list:type_name -> p4.v1.GenericList + 10, // 14: p4.v1.GenericData.generic_unordered_set:type_name -> p4.v1.GenericUnorderedSet + 7, // 15: p4.v1.GenericStructLike.members:type_name -> p4.v1.GenericData + 7, // 16: p4.v1.GenericList.members:type_name -> p4.v1.GenericData + 7, // 17: p4.v1.GenericUnorderedSet.members:type_name -> p4.v1.GenericData + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_p4_v1_p4data_proto_init() } @@ -770,6 +1202,66 @@ func file_p4_v1_p4data_proto_init() { return nil } } + file_p4_v1_p4data_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4data_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericStructLike); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4data_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4data_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericUnorderedSet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4data_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericVarbit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_p4_v1_p4data_proto_msgTypes[0].OneofWrappers = []interface{}{ (*P4Data_Bitstring)(nil), @@ -785,13 +1277,24 @@ func file_p4_v1_p4data_proto_init() { (*P4Data_Error)(nil), (*P4Data_EnumValue)(nil), } + file_p4_v1_p4data_proto_msgTypes[7].OneofWrappers = []interface{}{ + (*GenericData_Bitstring)(nil), + (*GenericData_Varbitstring)(nil), + (*GenericData_Bool)(nil), + (*GenericData_GenericStruct)(nil), + (*GenericData_GenericList)(nil), + (*GenericData_GenericUnorderedSet)(nil), + (*GenericData_String_)(nil), + (*GenericData_Enum)(nil), + (*GenericData_EnumValue)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_p4_v1_p4data_proto_rawDesc, NumEnums: 0, - NumMessages: 7, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, diff --git a/go/p4/v1/p4runtime.pb.go b/go/p4/v1/p4runtime.pb.go index 008b0fba..092378c4 100644 --- a/go/p4/v1/p4runtime.pb.go +++ b/go/p4/v1/p4runtime.pb.go @@ -679,6 +679,7 @@ type Entity struct { // *Entity_ValueSetEntry // *Entity_RegisterEntry // *Entity_DigestEntry + // *Entity_GenericTableEntry Entity isEntity_Entity `protobuf_oneof:"entity"` } @@ -805,6 +806,13 @@ func (x *Entity) GetDigestEntry() *DigestEntry { return nil } +func (x *Entity) GetGenericTableEntry() *GenericTableEntry { + if x, ok := x.GetEntity().(*Entity_GenericTableEntry); ok { + return x.GenericTableEntry + } + return nil +} + type isEntity_Entity interface { isEntity_Entity() } @@ -857,6 +865,10 @@ type Entity_DigestEntry struct { DigestEntry *DigestEntry `protobuf:"bytes,12,opt,name=digest_entry,json=digestEntry,proto3,oneof"` } +type Entity_GenericTableEntry struct { + GenericTableEntry *GenericTableEntry `protobuf:"bytes,13,opt,name=generic_table_entry,json=genericTableEntry,proto3,oneof"` +} + func (*Entity_ExternEntry) isEntity_Entity() {} func (*Entity_TableEntry) isEntity_Entity() {} @@ -881,6 +893,8 @@ func (*Entity_RegisterEntry) isEntity_Entity() {} func (*Entity_DigestEntry) isEntity_Entity() {} +func (*Entity_GenericTableEntry) isEntity_Entity() {} + type ExternEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1023,6 +1037,10 @@ type TableEntry struct { // the first two cases above, but newer P4Runtime API servers will. // Added in 1.4.0. IsConst bool `protobuf:"varint,13,opt,name=is_const,json=isConst,proto3" json:"is_const,omitempty"` + // list of GenericTableEntry + // The match fields aren't used. + // Only the union fields and priority + Resources []*GenericTableEntry `protobuf:"bytes,14,rep,name=resources,proto3" json:"resources,omitempty"` } func (x *TableEntry) Reset() { @@ -1149,6 +1167,13 @@ func (x *TableEntry) GetIsConst() bool { return false } +func (x *TableEntry) GetResources() []*GenericTableEntry { + if x != nil { + return x.Resources + } + return nil +} + // field_match_type ::= exact | ternary | lpm | range | optional type FieldMatch struct { state protoimpl.MessageState @@ -4449,6 +4474,306 @@ func (x *CapabilitiesResponse) GetP4RuntimeApiVersion() string { return "" } +// //// Begin : GenericTables messages +type GenericFieldMatch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FieldId uint32 `protobuf:"varint,1,opt,name=field_id,json=fieldId,proto3" json:"field_id,omitempty"` + // Types that are assignable to FieldMatchType: + // + // *GenericFieldMatch_Exact_ + // *GenericFieldMatch_Ternary_ + // *GenericFieldMatch_Lpm + // *GenericFieldMatch_Range_ + // *GenericFieldMatch_Optional_ + // *GenericFieldMatch_Other + FieldMatchType isGenericFieldMatch_FieldMatchType `protobuf_oneof:"field_match_type"` +} + +func (x *GenericFieldMatch) Reset() { + *x = GenericFieldMatch{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericFieldMatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericFieldMatch) ProtoMessage() {} + +func (x *GenericFieldMatch) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericFieldMatch.ProtoReflect.Descriptor instead. +func (*GenericFieldMatch) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{54} +} + +func (x *GenericFieldMatch) GetFieldId() uint32 { + if x != nil { + return x.FieldId + } + return 0 +} + +func (m *GenericFieldMatch) GetFieldMatchType() isGenericFieldMatch_FieldMatchType { + if m != nil { + return m.FieldMatchType + } + return nil +} + +func (x *GenericFieldMatch) GetExact() *GenericFieldMatch_Exact { + if x, ok := x.GetFieldMatchType().(*GenericFieldMatch_Exact_); ok { + return x.Exact + } + return nil +} + +func (x *GenericFieldMatch) GetTernary() *GenericFieldMatch_Ternary { + if x, ok := x.GetFieldMatchType().(*GenericFieldMatch_Ternary_); ok { + return x.Ternary + } + return nil +} + +func (x *GenericFieldMatch) GetLpm() *GenericFieldMatch_LPM { + if x, ok := x.GetFieldMatchType().(*GenericFieldMatch_Lpm); ok { + return x.Lpm + } + return nil +} + +func (x *GenericFieldMatch) GetRange() *GenericFieldMatch_Range { + if x, ok := x.GetFieldMatchType().(*GenericFieldMatch_Range_); ok { + return x.Range + } + return nil +} + +func (x *GenericFieldMatch) GetOptional() *GenericFieldMatch_Optional { + if x, ok := x.GetFieldMatchType().(*GenericFieldMatch_Optional_); ok { + return x.Optional + } + return nil +} + +func (x *GenericFieldMatch) GetOther() *anypb.Any { + if x, ok := x.GetFieldMatchType().(*GenericFieldMatch_Other); ok { + return x.Other + } + return nil +} + +type isGenericFieldMatch_FieldMatchType interface { + isGenericFieldMatch_FieldMatchType() +} + +type GenericFieldMatch_Exact_ struct { + Exact *GenericFieldMatch_Exact `protobuf:"bytes,2,opt,name=exact,proto3,oneof"` +} + +type GenericFieldMatch_Ternary_ struct { + Ternary *GenericFieldMatch_Ternary `protobuf:"bytes,3,opt,name=ternary,proto3,oneof"` +} + +type GenericFieldMatch_Lpm struct { + Lpm *GenericFieldMatch_LPM `protobuf:"bytes,4,opt,name=lpm,proto3,oneof"` +} + +type GenericFieldMatch_Range_ struct { + Range *GenericFieldMatch_Range `protobuf:"bytes,6,opt,name=range,proto3,oneof"` +} + +type GenericFieldMatch_Optional_ struct { + Optional *GenericFieldMatch_Optional `protobuf:"bytes,7,opt,name=optional,proto3,oneof"` +} + +type GenericFieldMatch_Other struct { + // Architecture-specific match value; it corresponds to the other_match_type + // in the P4Info MatchField message. + Other *anypb.Any `protobuf:"bytes,100,opt,name=other,proto3,oneof"` +} + +func (*GenericFieldMatch_Exact_) isGenericFieldMatch_FieldMatchType() {} + +func (*GenericFieldMatch_Ternary_) isGenericFieldMatch_FieldMatchType() {} + +func (*GenericFieldMatch_Lpm) isGenericFieldMatch_FieldMatchType() {} + +func (*GenericFieldMatch_Range_) isGenericFieldMatch_FieldMatchType() {} + +func (*GenericFieldMatch_Optional_) isGenericFieldMatch_FieldMatchType() {} + +func (*GenericFieldMatch_Other) isGenericFieldMatch_FieldMatchType() {} + +type GenericTableEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` + Match []*GenericFieldMatch `protobuf:"bytes,2,rep,name=match,proto3" json:"match,omitempty"` + TableDataUnion *TableDataUnion `protobuf:"bytes,3,opt,name=table_data_union,json=tableDataUnion,proto3" json:"table_data_union,omitempty"` + // Should only be set if the match implies a TCAM lookup, i.e. at least one of + // the match fields is Optional, Ternary or Range. A higher number indicates + // higher priority. Only a highest priority entry that matches the packet + // must be selected. Multiple entries in the same table with the same + // priority value are permitted. See Section "TableEntry" in the + // specification for details of the behavior. + Priority int32 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"` + // Set to true if the table entry is being used to update the single default + // entry of the table. If true, the "match" field must be empty and + // the "data union" field must be populated with a valid data union. + IsDefaultEntry bool `protobuf:"varint,5,opt,name=is_default_entry,json=isDefaultEntry,proto3" json:"is_default_entry,omitempty"` + // Arbitrary metadata from the controller that is opaque to the target. + Metadata []byte `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *GenericTableEntry) Reset() { + *x = GenericTableEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericTableEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericTableEntry) ProtoMessage() {} + +func (x *GenericTableEntry) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericTableEntry.ProtoReflect.Descriptor instead. +func (*GenericTableEntry) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{55} +} + +func (x *GenericTableEntry) GetTableId() uint32 { + if x != nil { + return x.TableId + } + return 0 +} + +func (x *GenericTableEntry) GetMatch() []*GenericFieldMatch { + if x != nil { + return x.Match + } + return nil +} + +func (x *GenericTableEntry) GetTableDataUnion() *TableDataUnion { + if x != nil { + return x.TableDataUnion + } + return nil +} + +func (x *GenericTableEntry) GetPriority() int32 { + if x != nil { + return x.Priority + } + return 0 +} + +func (x *GenericTableEntry) GetIsDefaultEntry() bool { + if x != nil { + return x.IsDefaultEntry + } + return false +} + +func (x *GenericTableEntry) GetMetadata() []byte { + if x != nil { + return x.Metadata + } + return nil +} + +type TableDataUnion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnionId uint32 `protobuf:"varint,1,opt,name=union_id,json=unionId,proto3" json:"union_id,omitempty"` + Params []*TableDataUnion_Param `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty"` +} + +func (x *TableDataUnion) Reset() { + *x = TableDataUnion{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TableDataUnion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableDataUnion) ProtoMessage() {} + +func (x *TableDataUnion) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableDataUnion.ProtoReflect.Descriptor instead. +func (*TableDataUnion) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{56} +} + +func (x *TableDataUnion) GetUnionId() uint32 { + if x != nil { + return x.UnionId + } + return 0 +} + +func (x *TableDataUnion) GetParams() []*TableDataUnion_Param { + if x != nil { + return x.Params + } + return nil +} + type TableEntry_IdleTimeout struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4462,7 +4787,7 @@ type TableEntry_IdleTimeout struct { func (x *TableEntry_IdleTimeout) Reset() { *x = TableEntry_IdleTimeout{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[54] + mi := &file_p4_v1_p4runtime_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4475,7 +4800,7 @@ func (x *TableEntry_IdleTimeout) String() string { func (*TableEntry_IdleTimeout) ProtoMessage() {} func (x *TableEntry_IdleTimeout) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[54] + mi := &file_p4_v1_p4runtime_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4511,7 +4836,7 @@ type FieldMatch_Exact struct { func (x *FieldMatch_Exact) Reset() { *x = FieldMatch_Exact{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[55] + mi := &file_p4_v1_p4runtime_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4524,7 +4849,7 @@ func (x *FieldMatch_Exact) String() string { func (*FieldMatch_Exact) ProtoMessage() {} func (x *FieldMatch_Exact) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[55] + mi := &file_p4_v1_p4runtime_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4559,7 +4884,7 @@ type FieldMatch_Ternary struct { func (x *FieldMatch_Ternary) Reset() { *x = FieldMatch_Ternary{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[56] + mi := &file_p4_v1_p4runtime_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4572,7 +4897,7 @@ func (x *FieldMatch_Ternary) String() string { func (*FieldMatch_Ternary) ProtoMessage() {} func (x *FieldMatch_Ternary) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[56] + mi := &file_p4_v1_p4runtime_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4614,7 +4939,7 @@ type FieldMatch_LPM struct { func (x *FieldMatch_LPM) Reset() { *x = FieldMatch_LPM{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[57] + mi := &file_p4_v1_p4runtime_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4627,7 +4952,7 @@ func (x *FieldMatch_LPM) String() string { func (*FieldMatch_LPM) ProtoMessage() {} func (x *FieldMatch_LPM) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[57] + mi := &file_p4_v1_p4runtime_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4671,7 +4996,7 @@ type FieldMatch_Range struct { func (x *FieldMatch_Range) Reset() { *x = FieldMatch_Range{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[58] + mi := &file_p4_v1_p4runtime_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4684,7 +5009,7 @@ func (x *FieldMatch_Range) String() string { func (*FieldMatch_Range) ProtoMessage() {} func (x *FieldMatch_Range) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[58] + mi := &file_p4_v1_p4runtime_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4727,7 +5052,7 @@ type FieldMatch_Optional struct { func (x *FieldMatch_Optional) Reset() { *x = FieldMatch_Optional{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[59] + mi := &file_p4_v1_p4runtime_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4740,7 +5065,7 @@ func (x *FieldMatch_Optional) String() string { func (*FieldMatch_Optional) ProtoMessage() {} func (x *FieldMatch_Optional) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[59] + mi := &file_p4_v1_p4runtime_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4775,7 +5100,7 @@ type Action_Param struct { func (x *Action_Param) Reset() { *x = Action_Param{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[60] + mi := &file_p4_v1_p4runtime_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4788,7 +5113,7 @@ func (x *Action_Param) String() string { func (*Action_Param) ProtoMessage() {} func (x *Action_Param) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[60] + mi := &file_p4_v1_p4runtime_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4835,7 +5160,7 @@ type ActionProfileGroup_Member struct { func (x *ActionProfileGroup_Member) Reset() { *x = ActionProfileGroup_Member{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[61] + mi := &file_p4_v1_p4runtime_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4848,7 +5173,7 @@ func (x *ActionProfileGroup_Member) String() string { func (*ActionProfileGroup_Member) ProtoMessage() {} func (x *ActionProfileGroup_Member) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[61] + mi := &file_p4_v1_p4runtime_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4937,7 +5262,7 @@ type DigestEntry_Config struct { func (x *DigestEntry_Config) Reset() { *x = DigestEntry_Config{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[62] + mi := &file_p4_v1_p4runtime_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4950,7 +5275,7 @@ func (x *DigestEntry_Config) String() string { func (*DigestEntry_Config) ProtoMessage() {} func (x *DigestEntry_Config) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[62] + mi := &file_p4_v1_p4runtime_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5005,7 +5330,7 @@ type ForwardingPipelineConfig_Cookie struct { func (x *ForwardingPipelineConfig_Cookie) Reset() { *x = ForwardingPipelineConfig_Cookie{} if protoimpl.UnsafeEnabled { - mi := &file_p4_v1_p4runtime_proto_msgTypes[63] + mi := &file_p4_v1_p4runtime_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5018,7 +5343,7 @@ func (x *ForwardingPipelineConfig_Cookie) String() string { func (*ForwardingPipelineConfig_Cookie) ProtoMessage() {} func (x *ForwardingPipelineConfig_Cookie) ProtoReflect() protoreflect.Message { - mi := &file_p4_v1_p4runtime_proto_msgTypes[63] + mi := &file_p4_v1_p4runtime_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5041,6 +5366,324 @@ func (x *ForwardingPipelineConfig_Cookie) GetCookie() uint64 { return 0 } +type GenericFieldMatch_Exact struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value *GenericData `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *GenericFieldMatch_Exact) Reset() { + *x = GenericFieldMatch_Exact{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericFieldMatch_Exact) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericFieldMatch_Exact) ProtoMessage() {} + +func (x *GenericFieldMatch_Exact) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericFieldMatch_Exact.ProtoReflect.Descriptor instead. +func (*GenericFieldMatch_Exact) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{54, 0} +} + +func (x *GenericFieldMatch_Exact) GetValue() *GenericData { + if x != nil { + return x.Value + } + return nil +} + +type GenericFieldMatch_Ternary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Mask []byte `protobuf:"bytes,2,opt,name=mask,proto3" json:"mask,omitempty"` +} + +func (x *GenericFieldMatch_Ternary) Reset() { + *x = GenericFieldMatch_Ternary{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericFieldMatch_Ternary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericFieldMatch_Ternary) ProtoMessage() {} + +func (x *GenericFieldMatch_Ternary) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericFieldMatch_Ternary.ProtoReflect.Descriptor instead. +func (*GenericFieldMatch_Ternary) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{54, 1} +} + +func (x *GenericFieldMatch_Ternary) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *GenericFieldMatch_Ternary) GetMask() []byte { + if x != nil { + return x.Mask + } + return nil +} + +type GenericFieldMatch_LPM struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + PrefixLen int32 `protobuf:"varint,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` // in bits +} + +func (x *GenericFieldMatch_LPM) Reset() { + *x = GenericFieldMatch_LPM{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericFieldMatch_LPM) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericFieldMatch_LPM) ProtoMessage() {} + +func (x *GenericFieldMatch_LPM) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericFieldMatch_LPM.ProtoReflect.Descriptor instead. +func (*GenericFieldMatch_LPM) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{54, 2} +} + +func (x *GenericFieldMatch_LPM) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *GenericFieldMatch_LPM) GetPrefixLen() int32 { + if x != nil { + return x.PrefixLen + } + return 0 +} + +// A Range is logically a set that contains all values numerically between +// 'low' and 'high' inclusively. +type GenericFieldMatch_Range struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Low []byte `protobuf:"bytes,1,opt,name=low,proto3" json:"low,omitempty"` + High []byte `protobuf:"bytes,2,opt,name=high,proto3" json:"high,omitempty"` +} + +func (x *GenericFieldMatch_Range) Reset() { + *x = GenericFieldMatch_Range{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericFieldMatch_Range) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericFieldMatch_Range) ProtoMessage() {} + +func (x *GenericFieldMatch_Range) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericFieldMatch_Range.ProtoReflect.Descriptor instead. +func (*GenericFieldMatch_Range) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{54, 3} +} + +func (x *GenericFieldMatch_Range) GetLow() []byte { + if x != nil { + return x.Low + } + return nil +} + +func (x *GenericFieldMatch_Range) GetHigh() []byte { + if x != nil { + return x.High + } + return nil +} + +// If the Optional match should be a wildcard, the FieldMatch must be omitted. +// Otherwise, this behaves like an exact match. +type GenericFieldMatch_Optional struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value *GenericData `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *GenericFieldMatch_Optional) Reset() { + *x = GenericFieldMatch_Optional{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericFieldMatch_Optional) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericFieldMatch_Optional) ProtoMessage() {} + +func (x *GenericFieldMatch_Optional) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericFieldMatch_Optional.ProtoReflect.Descriptor instead. +func (*GenericFieldMatch_Optional) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{54, 4} +} + +func (x *GenericFieldMatch_Optional) GetValue() *GenericData { + if x != nil { + return x.Value + } + return nil +} + +type TableDataUnion_Param struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParamId uint32 `protobuf:"varint,2,opt,name=param_id,json=paramId,proto3" json:"param_id,omitempty"` + Value *GenericData `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *TableDataUnion_Param) Reset() { + *x = TableDataUnion_Param{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_v1_p4runtime_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TableDataUnion_Param) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableDataUnion_Param) ProtoMessage() {} + +func (x *TableDataUnion_Param) ProtoReflect() protoreflect.Message { + mi := &file_p4_v1_p4runtime_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableDataUnion_Param.ProtoReflect.Descriptor instead. +func (*TableDataUnion_Param) Descriptor() ([]byte, []int) { + return file_p4_v1_p4runtime_proto_rawDescGZIP(), []int{56, 0} +} + +func (x *TableDataUnion_Param) GetParamId() uint32 { + if x != nil { + return x.ParamId + } + return 0 +} + +func (x *TableDataUnion_Param) GetValue() *GenericData { + if x != nil { + return x.Value + } + return nil +} + var File_p4_v1_p4runtime_proto protoreflect.FileDescriptor var file_p4_v1_p4runtime_proto_rawDesc = []byte{ @@ -5093,7 +5736,7 @@ var file_p4_v1_p4runtime_proto_rawDesc = []byte{ 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x59, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x22, 0xd2, 0x06, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x22, 0x9e, 0x07, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x65, @@ -5146,547 +5789,624 @@ var file_p4_v1_p4runtime_proto_rawDesc = []byte{ 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x08, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x7c, 0x0a, 0x0b, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x89, 0x05, 0x0a, 0x0a, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2a, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, - 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x0c, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, - 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, - 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x4e, 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, - 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x2e, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x10, - 0x74, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x69, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, - 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x1a, 0x2c, 0x0a, 0x0b, 0x49, 0x64, 0x6c, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, - 0x64, 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6c, 0x61, 0x70, - 0x73, 0x65, 0x64, 0x4e, 0x73, 0x22, 0xc8, 0x04, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, - 0x2f, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x11, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0x0a, + 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x7c, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xc1, 0x05, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x27, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, - 0x12, 0x35, 0x0a, 0x07, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x07, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x6c, 0x70, 0x6d, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4c, 0x50, 0x4d, 0x48, 0x00, 0x52, 0x03, 0x6c, - 0x70, 0x6d, 0x12, 0x2f, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x2c, 0x0a, - 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0x1d, 0x0a, 0x05, 0x45, - 0x78, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x33, 0x0a, 0x07, 0x54, 0x65, - 0x72, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x1a, - 0x3a, 0x0a, 0x03, 0x4c, 0x50, 0x4d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x1a, 0x2d, 0x0a, 0x05, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x1a, 0x20, 0x0a, 0x08, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x12, 0x0a, 0x10, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x8e, 0x02, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x27, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x18, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x15, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x5a, 0x0a, - 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, - 0x00, 0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x34, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x38, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, - 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x6a, 0x0a, 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x16, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9f, 0x01, 0x0a, - 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x77, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x05, 0x77, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x05, 0x77, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x1f, 0x0a, 0x0a, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, - 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, - 0x01, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbd, 0x02, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, - 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x88, 0x01, 0x0a, 0x06, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x05, 0x77, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, - 0x52, 0x05, 0x77, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0a, 0x77, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x77, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x61, 0x74, 0x63, - 0x68, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x1d, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb3, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x22, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0xae, 0x01, 0x0a, 0x10, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x0b, - 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x63, - 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x69, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, - 0x62, 0x75, 0x72, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x70, 0x69, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x62, 0x75, 0x72, 0x73, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x62, 0x75, 0x72, 0x73, 0x74, 0x22, - 0x79, 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, - 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x70, 0x0a, 0x12, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x33, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0b, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x0c, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4f, 0x0a, 0x0b, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x62, - 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x62, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8e, 0x01, - 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x2a, 0x0a, 0x06, - 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, - 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x24, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x72, 0x65, 0x64, 0x22, 0xc4, - 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x50, 0x0a, 0x15, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6c, 0x6f, 0x6e, - 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, - 0x0a, 0x12, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x08, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x08, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x08, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x34, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6f, - 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x2e, 0x0a, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, - 0x39, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x27, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x62, 0x0a, 0x0d, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0c, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, - 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x77, - 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x22, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x67, 0x65, 0x73, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x78, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x6d, 0x61, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x61, - 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, - 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x61, 0x72, - 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, - 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, - 0x00, 0x52, 0x0b, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, - 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, - 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x64, 0x69, - 0x67, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x41, 0x63, - 0x6b, 0x12, 0x2c, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x73, 0x12, 0x4c, + 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x34, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, + 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, + 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x43, 0x6f, + 0x6e, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x2c, 0x0a, 0x0b, 0x49, + 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6c, + 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x4e, 0x73, 0x22, 0xc8, 0x04, 0x0a, 0x0a, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x48, 0x00, 0x52, 0x05, 0x65, + 0x78, 0x61, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x07, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x6c, + 0x70, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4c, 0x50, 0x4d, 0x48, + 0x00, 0x52, 0x03, 0x6c, 0x70, 0x6d, 0x12, 0x2f, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, + 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x12, 0x2c, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, - 0x08, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x58, 0x0a, 0x09, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x0d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x22, 0xf5, 0x02, 0x0a, 0x15, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, 0x62, - 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x12, 0x5c, 0x0a, 0x19, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, - 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, - 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x22, 0x57, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x83, 0x01, 0x0a, 0x0a, - 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, - 0x67, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x22, 0x47, 0x0a, 0x0e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x17, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x0b, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x34, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52, 0x0a, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x5c, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x6b, 0x0a, 0x17, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb1, 0x02, 0x0a, - 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, - 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x12, - 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, - 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, - 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x41, 0x0a, 0x0e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x4f, 0x75, 0x74, 0x22, 0x52, 0x0a, 0x12, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x0f, 0x64, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, + 0x1d, 0x0a, 0x05, 0x45, 0x78, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x33, + 0x0a, 0x07, 0x54, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, + 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, 0x03, 0x4c, 0x50, 0x4d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x1a, + 0x2d, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, + 0x67, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x1a, 0x20, + 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x12, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x02, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, + 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x14, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x12, 0x5a, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x42, 0x06, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x38, 0x0a, 0x05, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x50, + 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x9f, 0x01, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x05, 0x77, 0x61, 0x74, 0x63, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x05, 0x77, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0a, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x6f, 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6b, 0x69, + 0x6e, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbd, 0x02, 0x0a, 0x12, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x1a, + 0x88, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x1a, 0x0a, 0x05, 0x77, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, + 0x18, 0x01, 0x48, 0x00, 0x52, 0x05, 0x77, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0a, 0x77, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x1d, 0x0a, 0x05, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb3, 0x01, 0x0a, 0x0a, 0x4d, 0x65, + 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, + 0xae, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x22, 0x61, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x10, 0x0a, 0x03, 0x63, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x69, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x63, 0x62, 0x75, 0x72, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x69, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x62, 0x75, + 0x72, 0x73, 0x74, 0x22, 0x79, 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x70, + 0x0a, 0x12, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x4f, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1d, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, + 0x12, 0x2a, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x24, 0x0a, 0x03, + 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x72, + 0x65, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x50, 0x0a, 0x15, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, + 0x52, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x11, + 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, + 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0b, 0x0a, + 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x12, 0x2a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x6f, + 0x6e, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, + 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, + 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x11, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x62, + 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x20, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x22, 0x77, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x34, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x01, 0x0a, 0x0b, + 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x78, 0x0a, 0x06, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, + 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d, + 0x61, 0x78, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x24, 0x0a, 0x0e, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x4e, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, + 0x0a, 0x0b, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x4f, 0x75, 0x74, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x35, + 0x0a, 0x0a, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x22, 0x3e, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x6f, - 0x74, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, - 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x22, 0x2f, 0x0a, 0x07, 0x55, 0x69, 0x6e, 0x74, 0x31, - 0x32, 0x38, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x22, 0x9f, 0x03, 0x0a, 0x22, 0x53, 0x65, 0x74, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, - 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x07, - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2f, 0x0a, - 0x0b, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, - 0x32, 0x38, 0x52, 0x0a, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x48, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, - 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, - 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x22, 0x77, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, - 0x11, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, - 0x49, 0x54, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x04, - 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x05, 0x22, 0x25, 0x0a, 0x23, 0x53, 0x65, - 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, - 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x18, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, - 0x0a, 0x06, 0x70, 0x34, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x70, 0x34, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x10, - 0x70, 0x34, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x34, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x52, 0x06, - 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x1a, 0x20, 0x0a, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, - 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5d, 0x0a, 0x0c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, - 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, - 0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x34, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x45, - 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, - 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x10, 0x03, 0x22, 0x5e, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x46, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa2, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, - 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x41, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, + 0x68, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x58, 0x0a, + 0x09, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x0d, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x69, 0x67, + 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x22, 0xf5, + 0x02, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x61, 0x72, 0x62, 0x69, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, + 0x0b, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x06, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x48, 0x00, 0x52, + 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x19, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x69, 0x64, 0x6c, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, + 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x57, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x49, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x83, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x69, + 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x47, 0x0a, 0x0e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, + 0x01, 0x0a, 0x17, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x0b, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52, 0x0a, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x5c, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x22, 0x6b, 0x0a, 0x17, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, + 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x22, 0xb1, 0x02, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, + 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, + 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x4f, 0x75, 0x74, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x22, 0x41, 0x0a, 0x0e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, + 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x52, 0x09, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x22, 0x52, 0x0a, 0x12, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3c, 0x0a, + 0x0f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x22, 0x3e, 0x0a, 0x10, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x2a, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x15, 0x0a, - 0x13, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x14, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x15, - 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x34, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2a, 0x8a, 0x01, 0x0a, 0x07, 0x53, 0x64, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x10, - 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, - 0x49, 0x4e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x0c, 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, - 0x21, 0x0a, 0x14, 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x49, - 0x52, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x45, 0x10, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x01, 0x12, 0x19, 0x0a, 0x0c, 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, - 0x50, 0x55, 0x10, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x32, 0x83, 0x04, - 0x0a, 0x09, 0x50, 0x34, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x33, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, - 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x76, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, - 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2a, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x22, 0x2f, 0x0a, 0x07, 0x55, + 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, + 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x22, 0x9f, 0x03, 0x0a, + 0x22, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x12, 0x2f, 0x0a, 0x0b, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52, 0x0a, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x48, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x77, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x10, + 0x02, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, + 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, + 0x49, 0x54, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, + 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x05, 0x22, 0x25, + 0x0a, 0x23, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x18, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x34, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x34, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x70, 0x34, 0x69, 0x6e, 0x66, 0x6f, + 0x12, 0x28, 0x0a, 0x10, 0x70, 0x34, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x34, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x6f, + 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, + 0x69, 0x65, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x1a, 0x20, 0x0a, 0x06, 0x43, 0x6f, + 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x22, 0xfd, 0x01, 0x0a, + 0x22, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x5b, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5d, 0x0a, + 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, + 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x34, 0x49, 0x4e, 0x46, + 0x4f, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x10, 0x02, 0x12, 0x1c, + 0x0a, 0x18, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, + 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x10, 0x03, 0x22, 0x5e, 0x0a, 0x23, + 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, - 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, - 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x42, 0x29, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x76, 0x31, 0xf8, 0x01, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa2, 0x01, 0x0a, + 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, + 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x14, 0x43, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x15, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x61, 0x70, + 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x05, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x3c, 0x0a, + 0x07, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x07, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x03, 0x6c, + 0x70, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x2e, 0x4c, 0x50, 0x4d, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x70, 0x6d, 0x12, 0x36, 0x0a, + 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, + 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x1a, 0x31, 0x0a, 0x05, 0x45, 0x78, 0x61, 0x63, 0x74, 0x12, 0x28, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x33, 0x0a, 0x07, 0x54, 0x65, 0x72, 0x6e, 0x61, + 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, 0x03, + 0x4c, 0x50, 0x4d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x1a, 0x2d, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, + 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x1a, 0x34, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x12, 0x0a, + 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0x81, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x3f, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x55, 0x6e, + 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x55, 0x6e, + 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xae, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x6e, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, 0x6e, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x4c, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x34, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x8a, 0x01, 0x0a, 0x07, 0x53, 0x64, 0x6e, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x44, 0x4e, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x0c, 0x53, 0x44, + 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x21, 0x0a, 0x14, 0x53, 0x44, 0x4e, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x52, 0x45, 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x45, 0x10, 0xfa, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x19, 0x0a, 0x0c, 0x53, 0x44, 0x4e, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x50, 0x55, 0x10, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x32, 0x83, 0x04, 0x0a, 0x09, 0x50, 0x34, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x34, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x14, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, + 0x12, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x76, 0x0a, 0x1b, + 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x70, 0x34, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, + 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0d, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x2e, + 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, + 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1a, + 0x2e, 0x70, 0x34, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x29, 0x5a, 0x24, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, + 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x76, + 0x31, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5702,7 +6422,7 @@ func file_p4_v1_p4runtime_proto_rawDescGZIP() []byte { } var file_p4_v1_p4runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_p4_v1_p4runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 64) +var file_p4_v1_p4runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 73) var file_p4_v1_p4runtime_proto_goTypes = []interface{}{ (SdnPort)(0), // 0: p4.v1.SdnPort (WriteRequest_Atomicity)(0), // 1: p4.v1.WriteRequest.Atomicity @@ -5763,132 +6483,156 @@ var file_p4_v1_p4runtime_proto_goTypes = []interface{}{ (*Error)(nil), // 56: p4.v1.Error (*CapabilitiesRequest)(nil), // 57: p4.v1.CapabilitiesRequest (*CapabilitiesResponse)(nil), // 58: p4.v1.CapabilitiesResponse - (*TableEntry_IdleTimeout)(nil), // 59: p4.v1.TableEntry.IdleTimeout - (*FieldMatch_Exact)(nil), // 60: p4.v1.FieldMatch.Exact - (*FieldMatch_Ternary)(nil), // 61: p4.v1.FieldMatch.Ternary - (*FieldMatch_LPM)(nil), // 62: p4.v1.FieldMatch.LPM - (*FieldMatch_Range)(nil), // 63: p4.v1.FieldMatch.Range - (*FieldMatch_Optional)(nil), // 64: p4.v1.FieldMatch.Optional - (*Action_Param)(nil), // 65: p4.v1.Action.Param - (*ActionProfileGroup_Member)(nil), // 66: p4.v1.ActionProfileGroup.Member - (*DigestEntry_Config)(nil), // 67: p4.v1.DigestEntry.Config - (*ForwardingPipelineConfig_Cookie)(nil), // 68: p4.v1.ForwardingPipelineConfig.Cookie - (*anypb.Any)(nil), // 69: google.protobuf.Any - (*P4Data)(nil), // 70: p4.v1.P4Data - (*status.Status)(nil), // 71: google.rpc.Status - (*v1.P4Info)(nil), // 72: p4.config.v1.P4Info + (*GenericFieldMatch)(nil), // 59: p4.v1.GenericFieldMatch + (*GenericTableEntry)(nil), // 60: p4.v1.GenericTableEntry + (*TableDataUnion)(nil), // 61: p4.v1.TableDataUnion + (*TableEntry_IdleTimeout)(nil), // 62: p4.v1.TableEntry.IdleTimeout + (*FieldMatch_Exact)(nil), // 63: p4.v1.FieldMatch.Exact + (*FieldMatch_Ternary)(nil), // 64: p4.v1.FieldMatch.Ternary + (*FieldMatch_LPM)(nil), // 65: p4.v1.FieldMatch.LPM + (*FieldMatch_Range)(nil), // 66: p4.v1.FieldMatch.Range + (*FieldMatch_Optional)(nil), // 67: p4.v1.FieldMatch.Optional + (*Action_Param)(nil), // 68: p4.v1.Action.Param + (*ActionProfileGroup_Member)(nil), // 69: p4.v1.ActionProfileGroup.Member + (*DigestEntry_Config)(nil), // 70: p4.v1.DigestEntry.Config + (*ForwardingPipelineConfig_Cookie)(nil), // 71: p4.v1.ForwardingPipelineConfig.Cookie + (*GenericFieldMatch_Exact)(nil), // 72: p4.v1.GenericFieldMatch.Exact + (*GenericFieldMatch_Ternary)(nil), // 73: p4.v1.GenericFieldMatch.Ternary + (*GenericFieldMatch_LPM)(nil), // 74: p4.v1.GenericFieldMatch.LPM + (*GenericFieldMatch_Range)(nil), // 75: p4.v1.GenericFieldMatch.Range + (*GenericFieldMatch_Optional)(nil), // 76: p4.v1.GenericFieldMatch.Optional + (*TableDataUnion_Param)(nil), // 77: p4.v1.TableDataUnion.Param + (*anypb.Any)(nil), // 78: google.protobuf.Any + (*P4Data)(nil), // 79: p4.v1.P4Data + (*status.Status)(nil), // 80: google.rpc.Status + (*v1.P4Info)(nil), // 81: p4.config.v1.P4Info + (*GenericData)(nil), // 82: p4.v1.GenericData } var file_p4_v1_p4runtime_proto_depIdxs = []int32{ - 50, // 0: p4.v1.WriteRequest.election_id:type_name -> p4.v1.Uint128 - 9, // 1: p4.v1.WriteRequest.updates:type_name -> p4.v1.Update - 1, // 2: p4.v1.WriteRequest.atomicity:type_name -> p4.v1.WriteRequest.Atomicity - 10, // 3: p4.v1.ReadRequest.entities:type_name -> p4.v1.Entity - 10, // 4: p4.v1.ReadResponse.entities:type_name -> p4.v1.Entity - 2, // 5: p4.v1.Update.type:type_name -> p4.v1.Update.Type - 10, // 6: p4.v1.Update.entity:type_name -> p4.v1.Entity - 11, // 7: p4.v1.Entity.extern_entry:type_name -> p4.v1.ExternEntry - 12, // 8: p4.v1.Entity.table_entry:type_name -> p4.v1.TableEntry - 18, // 9: p4.v1.Entity.action_profile_member:type_name -> p4.v1.ActionProfileMember - 19, // 10: p4.v1.Entity.action_profile_group:type_name -> p4.v1.ActionProfileGroup - 21, // 11: p4.v1.Entity.meter_entry:type_name -> p4.v1.MeterEntry - 22, // 12: p4.v1.Entity.direct_meter_entry:type_name -> p4.v1.DirectMeterEntry - 24, // 13: p4.v1.Entity.counter_entry:type_name -> p4.v1.CounterEntry - 25, // 14: p4.v1.Entity.direct_counter_entry:type_name -> p4.v1.DirectCounterEntry - 28, // 15: p4.v1.Entity.packet_replication_engine_entry:type_name -> p4.v1.PacketReplicationEngineEntry - 33, // 16: p4.v1.Entity.value_set_entry:type_name -> p4.v1.ValueSetEntry - 34, // 17: p4.v1.Entity.register_entry:type_name -> p4.v1.RegisterEntry - 35, // 18: p4.v1.Entity.digest_entry:type_name -> p4.v1.DigestEntry - 69, // 19: p4.v1.ExternEntry.entry:type_name -> google.protobuf.Any - 13, // 20: p4.v1.TableEntry.match:type_name -> p4.v1.FieldMatch - 14, // 21: p4.v1.TableEntry.action:type_name -> p4.v1.TableAction - 23, // 22: p4.v1.TableEntry.meter_config:type_name -> p4.v1.MeterConfig - 26, // 23: p4.v1.TableEntry.counter_data:type_name -> p4.v1.CounterData - 27, // 24: p4.v1.TableEntry.meter_counter_data:type_name -> p4.v1.MeterCounterData - 59, // 25: p4.v1.TableEntry.time_since_last_hit:type_name -> p4.v1.TableEntry.IdleTimeout - 60, // 26: p4.v1.FieldMatch.exact:type_name -> p4.v1.FieldMatch.Exact - 61, // 27: p4.v1.FieldMatch.ternary:type_name -> p4.v1.FieldMatch.Ternary - 62, // 28: p4.v1.FieldMatch.lpm:type_name -> p4.v1.FieldMatch.LPM - 63, // 29: p4.v1.FieldMatch.range:type_name -> p4.v1.FieldMatch.Range - 64, // 30: p4.v1.FieldMatch.optional:type_name -> p4.v1.FieldMatch.Optional - 69, // 31: p4.v1.FieldMatch.other:type_name -> google.protobuf.Any - 15, // 32: p4.v1.TableAction.action:type_name -> p4.v1.Action - 16, // 33: p4.v1.TableAction.action_profile_action_set:type_name -> p4.v1.ActionProfileActionSet - 65, // 34: p4.v1.Action.params:type_name -> p4.v1.Action.Param - 17, // 35: p4.v1.ActionProfileActionSet.action_profile_actions:type_name -> p4.v1.ActionProfileAction - 15, // 36: p4.v1.ActionProfileAction.action:type_name -> p4.v1.Action - 15, // 37: p4.v1.ActionProfileMember.action:type_name -> p4.v1.Action - 66, // 38: p4.v1.ActionProfileGroup.members:type_name -> p4.v1.ActionProfileGroup.Member - 20, // 39: p4.v1.MeterEntry.index:type_name -> p4.v1.Index - 23, // 40: p4.v1.MeterEntry.config:type_name -> p4.v1.MeterConfig - 27, // 41: p4.v1.MeterEntry.counter_data:type_name -> p4.v1.MeterCounterData - 12, // 42: p4.v1.DirectMeterEntry.table_entry:type_name -> p4.v1.TableEntry - 23, // 43: p4.v1.DirectMeterEntry.config:type_name -> p4.v1.MeterConfig - 27, // 44: p4.v1.DirectMeterEntry.counter_data:type_name -> p4.v1.MeterCounterData - 20, // 45: p4.v1.CounterEntry.index:type_name -> p4.v1.Index - 26, // 46: p4.v1.CounterEntry.data:type_name -> p4.v1.CounterData - 12, // 47: p4.v1.DirectCounterEntry.table_entry:type_name -> p4.v1.TableEntry - 26, // 48: p4.v1.DirectCounterEntry.data:type_name -> p4.v1.CounterData - 26, // 49: p4.v1.MeterCounterData.green:type_name -> p4.v1.CounterData - 26, // 50: p4.v1.MeterCounterData.yellow:type_name -> p4.v1.CounterData - 26, // 51: p4.v1.MeterCounterData.red:type_name -> p4.v1.CounterData - 30, // 52: p4.v1.PacketReplicationEngineEntry.multicast_group_entry:type_name -> p4.v1.MulticastGroupEntry - 31, // 53: p4.v1.PacketReplicationEngineEntry.clone_session_entry:type_name -> p4.v1.CloneSessionEntry - 29, // 54: p4.v1.MulticastGroupEntry.replicas:type_name -> p4.v1.Replica - 29, // 55: p4.v1.CloneSessionEntry.replicas:type_name -> p4.v1.Replica - 13, // 56: p4.v1.ValueSetMember.match:type_name -> p4.v1.FieldMatch - 32, // 57: p4.v1.ValueSetEntry.members:type_name -> p4.v1.ValueSetMember - 20, // 58: p4.v1.RegisterEntry.index:type_name -> p4.v1.Index - 70, // 59: p4.v1.RegisterEntry.data:type_name -> p4.v1.P4Data - 67, // 60: p4.v1.DigestEntry.config:type_name -> p4.v1.DigestEntry.Config - 43, // 61: p4.v1.StreamMessageRequest.arbitration:type_name -> p4.v1.MasterArbitrationUpdate - 37, // 62: p4.v1.StreamMessageRequest.packet:type_name -> p4.v1.PacketOut - 38, // 63: p4.v1.StreamMessageRequest.digest_ack:type_name -> p4.v1.DigestListAck - 69, // 64: p4.v1.StreamMessageRequest.other:type_name -> google.protobuf.Any - 42, // 65: p4.v1.PacketOut.metadata:type_name -> p4.v1.PacketMetadata - 43, // 66: p4.v1.StreamMessageResponse.arbitration:type_name -> p4.v1.MasterArbitrationUpdate - 40, // 67: p4.v1.StreamMessageResponse.packet:type_name -> p4.v1.PacketIn - 41, // 68: p4.v1.StreamMessageResponse.digest:type_name -> p4.v1.DigestList - 45, // 69: p4.v1.StreamMessageResponse.idle_timeout_notification:type_name -> p4.v1.IdleTimeoutNotification - 69, // 70: p4.v1.StreamMessageResponse.other:type_name -> google.protobuf.Any - 46, // 71: p4.v1.StreamMessageResponse.error:type_name -> p4.v1.StreamError - 42, // 72: p4.v1.PacketIn.metadata:type_name -> p4.v1.PacketMetadata - 70, // 73: p4.v1.DigestList.data:type_name -> p4.v1.P4Data - 44, // 74: p4.v1.MasterArbitrationUpdate.role:type_name -> p4.v1.Role - 50, // 75: p4.v1.MasterArbitrationUpdate.election_id:type_name -> p4.v1.Uint128 - 71, // 76: p4.v1.MasterArbitrationUpdate.status:type_name -> google.rpc.Status - 69, // 77: p4.v1.Role.config:type_name -> google.protobuf.Any - 12, // 78: p4.v1.IdleTimeoutNotification.table_entry:type_name -> p4.v1.TableEntry - 47, // 79: p4.v1.StreamError.packet_out:type_name -> p4.v1.PacketOutError - 48, // 80: p4.v1.StreamError.digest_list_ack:type_name -> p4.v1.DigestListAckError - 49, // 81: p4.v1.StreamError.other:type_name -> p4.v1.StreamOtherError - 37, // 82: p4.v1.PacketOutError.packet_out:type_name -> p4.v1.PacketOut - 38, // 83: p4.v1.DigestListAckError.digest_list_ack:type_name -> p4.v1.DigestListAck - 69, // 84: p4.v1.StreamOtherError.other:type_name -> google.protobuf.Any - 50, // 85: p4.v1.SetForwardingPipelineConfigRequest.election_id:type_name -> p4.v1.Uint128 - 3, // 86: p4.v1.SetForwardingPipelineConfigRequest.action:type_name -> p4.v1.SetForwardingPipelineConfigRequest.Action - 53, // 87: p4.v1.SetForwardingPipelineConfigRequest.config:type_name -> p4.v1.ForwardingPipelineConfig - 72, // 88: p4.v1.ForwardingPipelineConfig.p4info:type_name -> p4.config.v1.P4Info - 68, // 89: p4.v1.ForwardingPipelineConfig.cookie:type_name -> p4.v1.ForwardingPipelineConfig.Cookie - 4, // 90: p4.v1.GetForwardingPipelineConfigRequest.response_type:type_name -> p4.v1.GetForwardingPipelineConfigRequest.ResponseType - 53, // 91: p4.v1.GetForwardingPipelineConfigResponse.config:type_name -> p4.v1.ForwardingPipelineConfig - 69, // 92: p4.v1.Error.details:type_name -> google.protobuf.Any - 5, // 93: p4.v1.P4Runtime.Write:input_type -> p4.v1.WriteRequest - 7, // 94: p4.v1.P4Runtime.Read:input_type -> p4.v1.ReadRequest - 51, // 95: p4.v1.P4Runtime.SetForwardingPipelineConfig:input_type -> p4.v1.SetForwardingPipelineConfigRequest - 54, // 96: p4.v1.P4Runtime.GetForwardingPipelineConfig:input_type -> p4.v1.GetForwardingPipelineConfigRequest - 36, // 97: p4.v1.P4Runtime.StreamChannel:input_type -> p4.v1.StreamMessageRequest - 57, // 98: p4.v1.P4Runtime.Capabilities:input_type -> p4.v1.CapabilitiesRequest - 6, // 99: p4.v1.P4Runtime.Write:output_type -> p4.v1.WriteResponse - 8, // 100: p4.v1.P4Runtime.Read:output_type -> p4.v1.ReadResponse - 52, // 101: p4.v1.P4Runtime.SetForwardingPipelineConfig:output_type -> p4.v1.SetForwardingPipelineConfigResponse - 55, // 102: p4.v1.P4Runtime.GetForwardingPipelineConfig:output_type -> p4.v1.GetForwardingPipelineConfigResponse - 39, // 103: p4.v1.P4Runtime.StreamChannel:output_type -> p4.v1.StreamMessageResponse - 58, // 104: p4.v1.P4Runtime.Capabilities:output_type -> p4.v1.CapabilitiesResponse - 99, // [99:105] is the sub-list for method output_type - 93, // [93:99] is the sub-list for method input_type - 93, // [93:93] is the sub-list for extension type_name - 93, // [93:93] is the sub-list for extension extendee - 0, // [0:93] is the sub-list for field type_name + 50, // 0: p4.v1.WriteRequest.election_id:type_name -> p4.v1.Uint128 + 9, // 1: p4.v1.WriteRequest.updates:type_name -> p4.v1.Update + 1, // 2: p4.v1.WriteRequest.atomicity:type_name -> p4.v1.WriteRequest.Atomicity + 10, // 3: p4.v1.ReadRequest.entities:type_name -> p4.v1.Entity + 10, // 4: p4.v1.ReadResponse.entities:type_name -> p4.v1.Entity + 2, // 5: p4.v1.Update.type:type_name -> p4.v1.Update.Type + 10, // 6: p4.v1.Update.entity:type_name -> p4.v1.Entity + 11, // 7: p4.v1.Entity.extern_entry:type_name -> p4.v1.ExternEntry + 12, // 8: p4.v1.Entity.table_entry:type_name -> p4.v1.TableEntry + 18, // 9: p4.v1.Entity.action_profile_member:type_name -> p4.v1.ActionProfileMember + 19, // 10: p4.v1.Entity.action_profile_group:type_name -> p4.v1.ActionProfileGroup + 21, // 11: p4.v1.Entity.meter_entry:type_name -> p4.v1.MeterEntry + 22, // 12: p4.v1.Entity.direct_meter_entry:type_name -> p4.v1.DirectMeterEntry + 24, // 13: p4.v1.Entity.counter_entry:type_name -> p4.v1.CounterEntry + 25, // 14: p4.v1.Entity.direct_counter_entry:type_name -> p4.v1.DirectCounterEntry + 28, // 15: p4.v1.Entity.packet_replication_engine_entry:type_name -> p4.v1.PacketReplicationEngineEntry + 33, // 16: p4.v1.Entity.value_set_entry:type_name -> p4.v1.ValueSetEntry + 34, // 17: p4.v1.Entity.register_entry:type_name -> p4.v1.RegisterEntry + 35, // 18: p4.v1.Entity.digest_entry:type_name -> p4.v1.DigestEntry + 60, // 19: p4.v1.Entity.generic_table_entry:type_name -> p4.v1.GenericTableEntry + 78, // 20: p4.v1.ExternEntry.entry:type_name -> google.protobuf.Any + 13, // 21: p4.v1.TableEntry.match:type_name -> p4.v1.FieldMatch + 14, // 22: p4.v1.TableEntry.action:type_name -> p4.v1.TableAction + 23, // 23: p4.v1.TableEntry.meter_config:type_name -> p4.v1.MeterConfig + 26, // 24: p4.v1.TableEntry.counter_data:type_name -> p4.v1.CounterData + 27, // 25: p4.v1.TableEntry.meter_counter_data:type_name -> p4.v1.MeterCounterData + 62, // 26: p4.v1.TableEntry.time_since_last_hit:type_name -> p4.v1.TableEntry.IdleTimeout + 60, // 27: p4.v1.TableEntry.resources:type_name -> p4.v1.GenericTableEntry + 63, // 28: p4.v1.FieldMatch.exact:type_name -> p4.v1.FieldMatch.Exact + 64, // 29: p4.v1.FieldMatch.ternary:type_name -> p4.v1.FieldMatch.Ternary + 65, // 30: p4.v1.FieldMatch.lpm:type_name -> p4.v1.FieldMatch.LPM + 66, // 31: p4.v1.FieldMatch.range:type_name -> p4.v1.FieldMatch.Range + 67, // 32: p4.v1.FieldMatch.optional:type_name -> p4.v1.FieldMatch.Optional + 78, // 33: p4.v1.FieldMatch.other:type_name -> google.protobuf.Any + 15, // 34: p4.v1.TableAction.action:type_name -> p4.v1.Action + 16, // 35: p4.v1.TableAction.action_profile_action_set:type_name -> p4.v1.ActionProfileActionSet + 68, // 36: p4.v1.Action.params:type_name -> p4.v1.Action.Param + 17, // 37: p4.v1.ActionProfileActionSet.action_profile_actions:type_name -> p4.v1.ActionProfileAction + 15, // 38: p4.v1.ActionProfileAction.action:type_name -> p4.v1.Action + 15, // 39: p4.v1.ActionProfileMember.action:type_name -> p4.v1.Action + 69, // 40: p4.v1.ActionProfileGroup.members:type_name -> p4.v1.ActionProfileGroup.Member + 20, // 41: p4.v1.MeterEntry.index:type_name -> p4.v1.Index + 23, // 42: p4.v1.MeterEntry.config:type_name -> p4.v1.MeterConfig + 27, // 43: p4.v1.MeterEntry.counter_data:type_name -> p4.v1.MeterCounterData + 12, // 44: p4.v1.DirectMeterEntry.table_entry:type_name -> p4.v1.TableEntry + 23, // 45: p4.v1.DirectMeterEntry.config:type_name -> p4.v1.MeterConfig + 27, // 46: p4.v1.DirectMeterEntry.counter_data:type_name -> p4.v1.MeterCounterData + 20, // 47: p4.v1.CounterEntry.index:type_name -> p4.v1.Index + 26, // 48: p4.v1.CounterEntry.data:type_name -> p4.v1.CounterData + 12, // 49: p4.v1.DirectCounterEntry.table_entry:type_name -> p4.v1.TableEntry + 26, // 50: p4.v1.DirectCounterEntry.data:type_name -> p4.v1.CounterData + 26, // 51: p4.v1.MeterCounterData.green:type_name -> p4.v1.CounterData + 26, // 52: p4.v1.MeterCounterData.yellow:type_name -> p4.v1.CounterData + 26, // 53: p4.v1.MeterCounterData.red:type_name -> p4.v1.CounterData + 30, // 54: p4.v1.PacketReplicationEngineEntry.multicast_group_entry:type_name -> p4.v1.MulticastGroupEntry + 31, // 55: p4.v1.PacketReplicationEngineEntry.clone_session_entry:type_name -> p4.v1.CloneSessionEntry + 29, // 56: p4.v1.MulticastGroupEntry.replicas:type_name -> p4.v1.Replica + 29, // 57: p4.v1.CloneSessionEntry.replicas:type_name -> p4.v1.Replica + 13, // 58: p4.v1.ValueSetMember.match:type_name -> p4.v1.FieldMatch + 32, // 59: p4.v1.ValueSetEntry.members:type_name -> p4.v1.ValueSetMember + 20, // 60: p4.v1.RegisterEntry.index:type_name -> p4.v1.Index + 79, // 61: p4.v1.RegisterEntry.data:type_name -> p4.v1.P4Data + 70, // 62: p4.v1.DigestEntry.config:type_name -> p4.v1.DigestEntry.Config + 43, // 63: p4.v1.StreamMessageRequest.arbitration:type_name -> p4.v1.MasterArbitrationUpdate + 37, // 64: p4.v1.StreamMessageRequest.packet:type_name -> p4.v1.PacketOut + 38, // 65: p4.v1.StreamMessageRequest.digest_ack:type_name -> p4.v1.DigestListAck + 78, // 66: p4.v1.StreamMessageRequest.other:type_name -> google.protobuf.Any + 42, // 67: p4.v1.PacketOut.metadata:type_name -> p4.v1.PacketMetadata + 43, // 68: p4.v1.StreamMessageResponse.arbitration:type_name -> p4.v1.MasterArbitrationUpdate + 40, // 69: p4.v1.StreamMessageResponse.packet:type_name -> p4.v1.PacketIn + 41, // 70: p4.v1.StreamMessageResponse.digest:type_name -> p4.v1.DigestList + 45, // 71: p4.v1.StreamMessageResponse.idle_timeout_notification:type_name -> p4.v1.IdleTimeoutNotification + 78, // 72: p4.v1.StreamMessageResponse.other:type_name -> google.protobuf.Any + 46, // 73: p4.v1.StreamMessageResponse.error:type_name -> p4.v1.StreamError + 42, // 74: p4.v1.PacketIn.metadata:type_name -> p4.v1.PacketMetadata + 79, // 75: p4.v1.DigestList.data:type_name -> p4.v1.P4Data + 44, // 76: p4.v1.MasterArbitrationUpdate.role:type_name -> p4.v1.Role + 50, // 77: p4.v1.MasterArbitrationUpdate.election_id:type_name -> p4.v1.Uint128 + 80, // 78: p4.v1.MasterArbitrationUpdate.status:type_name -> google.rpc.Status + 78, // 79: p4.v1.Role.config:type_name -> google.protobuf.Any + 12, // 80: p4.v1.IdleTimeoutNotification.table_entry:type_name -> p4.v1.TableEntry + 47, // 81: p4.v1.StreamError.packet_out:type_name -> p4.v1.PacketOutError + 48, // 82: p4.v1.StreamError.digest_list_ack:type_name -> p4.v1.DigestListAckError + 49, // 83: p4.v1.StreamError.other:type_name -> p4.v1.StreamOtherError + 37, // 84: p4.v1.PacketOutError.packet_out:type_name -> p4.v1.PacketOut + 38, // 85: p4.v1.DigestListAckError.digest_list_ack:type_name -> p4.v1.DigestListAck + 78, // 86: p4.v1.StreamOtherError.other:type_name -> google.protobuf.Any + 50, // 87: p4.v1.SetForwardingPipelineConfigRequest.election_id:type_name -> p4.v1.Uint128 + 3, // 88: p4.v1.SetForwardingPipelineConfigRequest.action:type_name -> p4.v1.SetForwardingPipelineConfigRequest.Action + 53, // 89: p4.v1.SetForwardingPipelineConfigRequest.config:type_name -> p4.v1.ForwardingPipelineConfig + 81, // 90: p4.v1.ForwardingPipelineConfig.p4info:type_name -> p4.config.v1.P4Info + 71, // 91: p4.v1.ForwardingPipelineConfig.cookie:type_name -> p4.v1.ForwardingPipelineConfig.Cookie + 4, // 92: p4.v1.GetForwardingPipelineConfigRequest.response_type:type_name -> p4.v1.GetForwardingPipelineConfigRequest.ResponseType + 53, // 93: p4.v1.GetForwardingPipelineConfigResponse.config:type_name -> p4.v1.ForwardingPipelineConfig + 78, // 94: p4.v1.Error.details:type_name -> google.protobuf.Any + 72, // 95: p4.v1.GenericFieldMatch.exact:type_name -> p4.v1.GenericFieldMatch.Exact + 73, // 96: p4.v1.GenericFieldMatch.ternary:type_name -> p4.v1.GenericFieldMatch.Ternary + 74, // 97: p4.v1.GenericFieldMatch.lpm:type_name -> p4.v1.GenericFieldMatch.LPM + 75, // 98: p4.v1.GenericFieldMatch.range:type_name -> p4.v1.GenericFieldMatch.Range + 76, // 99: p4.v1.GenericFieldMatch.optional:type_name -> p4.v1.GenericFieldMatch.Optional + 78, // 100: p4.v1.GenericFieldMatch.other:type_name -> google.protobuf.Any + 59, // 101: p4.v1.GenericTableEntry.match:type_name -> p4.v1.GenericFieldMatch + 61, // 102: p4.v1.GenericTableEntry.table_data_union:type_name -> p4.v1.TableDataUnion + 77, // 103: p4.v1.TableDataUnion.params:type_name -> p4.v1.TableDataUnion.Param + 82, // 104: p4.v1.GenericFieldMatch.Exact.value:type_name -> p4.v1.GenericData + 82, // 105: p4.v1.GenericFieldMatch.Optional.value:type_name -> p4.v1.GenericData + 82, // 106: p4.v1.TableDataUnion.Param.value:type_name -> p4.v1.GenericData + 5, // 107: p4.v1.P4Runtime.Write:input_type -> p4.v1.WriteRequest + 7, // 108: p4.v1.P4Runtime.Read:input_type -> p4.v1.ReadRequest + 51, // 109: p4.v1.P4Runtime.SetForwardingPipelineConfig:input_type -> p4.v1.SetForwardingPipelineConfigRequest + 54, // 110: p4.v1.P4Runtime.GetForwardingPipelineConfig:input_type -> p4.v1.GetForwardingPipelineConfigRequest + 36, // 111: p4.v1.P4Runtime.StreamChannel:input_type -> p4.v1.StreamMessageRequest + 57, // 112: p4.v1.P4Runtime.Capabilities:input_type -> p4.v1.CapabilitiesRequest + 6, // 113: p4.v1.P4Runtime.Write:output_type -> p4.v1.WriteResponse + 8, // 114: p4.v1.P4Runtime.Read:output_type -> p4.v1.ReadResponse + 52, // 115: p4.v1.P4Runtime.SetForwardingPipelineConfig:output_type -> p4.v1.SetForwardingPipelineConfigResponse + 55, // 116: p4.v1.P4Runtime.GetForwardingPipelineConfig:output_type -> p4.v1.GetForwardingPipelineConfigResponse + 39, // 117: p4.v1.P4Runtime.StreamChannel:output_type -> p4.v1.StreamMessageResponse + 58, // 118: p4.v1.P4Runtime.Capabilities:output_type -> p4.v1.CapabilitiesResponse + 113, // [113:119] is the sub-list for method output_type + 107, // [107:113] is the sub-list for method input_type + 107, // [107:107] is the sub-list for extension type_name + 107, // [107:107] is the sub-list for extension extendee + 0, // [0:107] is the sub-list for field type_name } func init() { file_p4_v1_p4runtime_proto_init() } @@ -6547,7 +7291,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableEntry_IdleTimeout); i { + switch v := v.(*GenericFieldMatch); i { case 0: return &v.state case 1: @@ -6559,7 +7303,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldMatch_Exact); i { + switch v := v.(*GenericTableEntry); i { case 0: return &v.state case 1: @@ -6571,7 +7315,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldMatch_Ternary); i { + switch v := v.(*TableDataUnion); i { case 0: return &v.state case 1: @@ -6583,7 +7327,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldMatch_LPM); i { + switch v := v.(*TableEntry_IdleTimeout); i { case 0: return &v.state case 1: @@ -6595,7 +7339,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldMatch_Range); i { + switch v := v.(*FieldMatch_Exact); i { case 0: return &v.state case 1: @@ -6607,7 +7351,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldMatch_Optional); i { + switch v := v.(*FieldMatch_Ternary); i { case 0: return &v.state case 1: @@ -6619,7 +7363,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_Param); i { + switch v := v.(*FieldMatch_LPM); i { case 0: return &v.state case 1: @@ -6631,7 +7375,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfileGroup_Member); i { + switch v := v.(*FieldMatch_Range); i { case 0: return &v.state case 1: @@ -6643,7 +7387,7 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DigestEntry_Config); i { + switch v := v.(*FieldMatch_Optional); i { case 0: return &v.state case 1: @@ -6655,6 +7399,42 @@ func file_p4_v1_p4runtime_proto_init() { } } file_p4_v1_p4runtime_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Action_Param); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProfileGroup_Member); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DigestEntry_Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ForwardingPipelineConfig_Cookie); i { case 0: return &v.state @@ -6666,6 +7446,78 @@ func file_p4_v1_p4runtime_proto_init() { return nil } } + file_p4_v1_p4runtime_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericFieldMatch_Exact); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericFieldMatch_Ternary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericFieldMatch_LPM); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericFieldMatch_Range); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericFieldMatch_Optional); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_v1_p4runtime_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TableDataUnion_Param); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_p4_v1_p4runtime_proto_msgTypes[5].OneofWrappers = []interface{}{ (*Entity_ExternEntry)(nil), @@ -6680,6 +7532,7 @@ func file_p4_v1_p4runtime_proto_init() { (*Entity_ValueSetEntry)(nil), (*Entity_RegisterEntry)(nil), (*Entity_DigestEntry)(nil), + (*Entity_GenericTableEntry)(nil), } file_p4_v1_p4runtime_proto_msgTypes[8].OneofWrappers = []interface{}{ (*FieldMatch_Exact_)(nil), @@ -6726,7 +7579,15 @@ func file_p4_v1_p4runtime_proto_init() { (*StreamError_DigestListAck)(nil), (*StreamError_Other)(nil), } - file_p4_v1_p4runtime_proto_msgTypes[61].OneofWrappers = []interface{}{ + file_p4_v1_p4runtime_proto_msgTypes[54].OneofWrappers = []interface{}{ + (*GenericFieldMatch_Exact_)(nil), + (*GenericFieldMatch_Ternary_)(nil), + (*GenericFieldMatch_Lpm)(nil), + (*GenericFieldMatch_Range_)(nil), + (*GenericFieldMatch_Optional_)(nil), + (*GenericFieldMatch_Other)(nil), + } + file_p4_v1_p4runtime_proto_msgTypes[64].OneofWrappers = []interface{}{ (*ActionProfileGroup_Member_Watch)(nil), (*ActionProfileGroup_Member_WatchPort)(nil), } @@ -6736,7 +7597,7 @@ func file_p4_v1_p4runtime_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_p4_v1_p4runtime_proto_rawDesc, NumEnums: 5, - NumMessages: 64, + NumMessages: 73, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/p4/config/v1/p4info.proto b/proto/p4/config/v1/p4info.proto index ed548cec..9c7d8856 100644 --- a/proto/p4/config/v1/p4info.proto +++ b/proto/p4/config/v1/p4info.proto @@ -36,6 +36,8 @@ message P4Info { repeated ValueSet value_sets = 10; repeated Register registers = 11; repeated Digest digests = 12; + repeated GenericTable generic_tables = 13; + repeated Union unions = 14; repeated Extern externs = 100; P4TypeInfo type_info = 200; } @@ -103,6 +105,7 @@ message P4Ids { DIRECT_METER = 0x15; REGISTER = 0x16; DIGEST = 0x17; + GENERIC_TABLE = 0x18; // externs for other architectures (vendor extensions) OTHER_EXTERNS_START = 0x80; @@ -114,6 +117,22 @@ message P4Ids { } } +// A subtype of P4IDs for GenericTables +message GenericTableType { + // The ID space is for Generic tables. In the Preamble ID, the MSB will be + // 0x18 but the next MSB is reserved for this enum. This shortens the ID + // space for tables in each type but it is still 64k (16 bits) for each table + enum Prefix { + + GENERIC_TABLES_START = 0x00; + + // max value for an unsigned 8-bit byte + MAX = 0xff; + // requires protoc >= 3.5.0 + // reserved 0x100 to max; + } +} + message Preamble { // ids share the same number-space; e.g. table ids cannot overlap with counter // ids. Even though this is irrelevant to this proto definition, the ids are @@ -407,3 +426,87 @@ message Digest { Preamble preamble = 1; P4DataTypeSpec type_spec = 2; } + +////// Begin : GenericTables messages + +message GenericMatchField { + uint32 id = 1; + string name = 2; + GenericDataTypeSpec type_spec = 3; + enum MatchType { + UNSPECIFIED = 0; + EXACT = 2; + LPM = 3; + TERNARY = 4; + RANGE = 5; + OPTIONAL = 6; + } + oneof match { + MatchType match_type = 4; + // used for architecture-specific match types which are not part of the core + // P4 language or of the PSA architecture. + string other_match_type = 5; + } + // Documentation of the match field + Documentation doc = 6; + repeated string annotations = 7; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated StructuredAnnotation structured_annotations = 8; + repeated SourceLocation annotation_locations = 9; +} + +// used to list all possible unions in a Table +message UnionRef { + uint32 id = 1; + enum Scope { + TABLE_AND_DEFAULT = 0; + TABLE_ONLY = 1; + DEFAULT_ONLY = 2; + } + Scope scope = 3; + repeated string annotations = 2; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 5; + repeated StructuredAnnotation structured_annotations = 4; +} + +message Union { + Preamble preamble = 1; + message Param { + uint32 id = 1; + string name = 2; + repeated string annotations = 3; + GenericDataTypeSpec type_spec = 4; + // Documentation of the Param + Documentation doc = 5; + repeated StructuredAnnotation structured_annotations = 6; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 7; + } + repeated Param params = 2; +} + +// All Tables of one type will be grouped in one message. +message GenericTable { + uint32 type_id = 1; + string type_name = 2; + repeated string properties = 3; + repeated GenericTableInstance instances = 4; +} + +message GenericTableInstance { + Preamble preamble = 1; + repeated GenericMatchField generic_match_fields = 2; + repeated UnionRef union_refs = 3; + // 0 (default value) means that the table does not have a const default action + uint32 const_default_union_id= 4; + int64 size = 5; // max number of entries in table + // architecture-specific table properties which are not part of the core P4 + // language or of the PSA architecture. + google.protobuf.Any other_properties = 100; +} + +////// End: GenericTables diff --git a/proto/p4/config/v1/p4types.proto b/proto/p4/config/v1/p4types.proto index ff317b68..cbc00414 100644 --- a/proto/p4/config/v1/p4types.proto +++ b/proto/p4/config/v1/p4types.proto @@ -292,4 +292,193 @@ message P4NewTypeSpec { repeated StructuredAnnotation structured_annotations = 4; } -// End of P4 type specs -------------------------------------------------------- +////// Begin : GenericTables messages + +// Instead of duplicating the type spec for these +// every time the type is used, we include the type spec once in this +// GenericTypeInfo message and refer to the types by name in the +// GenericDataTypeSpec message. We also +// support annotations for these type specs which can be useful, e.g. to +// identify well-known headers (such as ipv4). +message GenericTypeInfo { + map structs = 1; + map lists = 2; + map unordered_sets = 3; + map enums = 4; + map serializable_enums = 5; + map new_types = 6; +} + +// Describes Generic Data types. +message GenericDataTypeSpec { + oneof type_spec { + GenericBitstringLikeTypeSpec bitstring = 1; + GenericBoolType bool = 2; + GenericNamedType struct = 3; + GenericNamedType list = 4; + GenericNamedType unordered_set = 5; + GenericNamedType string = 6; + GenericNamedType enum = 7; + GenericNamedType serializable_enum = 8; + GenericNamedType new_type = 9; + } +} + +message GenericNamedType { + string name = 1; +} + +message GenericBoolType { + int32 default_value = 1; +} + +message GenericBitstringLikeTypeSpec { + oneof type_spec { + GenericBitTypeSpec bit = 1; // bit + GenericIntTypeSpec int = 2; // int + GenericVarbitTypeSpec varbit = 3; // varbit + } + // Useful to identify well-known types, such as IP address or Ethernet MAC + // address. + repeated string annotations = 4; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 5; + repeated StructuredAnnotation structured_annotations = 6; +} + +message GenericBitTypeSpec { + int32 bitwidth = 1; + bytes default_value = 2; +} + +message GenericIntTypeSpec { + int32 bitwidth = 1; + bytes default_value = 2; +} + +message GenericVarbitTypeSpec { + int32 max_bitwidth = 1; + bytes default_value = 2; +} +message GenericStructTypeSpec { + message Member { + uint32 id = 1; + string name = 2; + GenericDataTypeSpec type_spec = 3; + } + repeated Member members = 1; + repeated string annotations = 2; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 5; + repeated StructuredAnnotation structured_annotations = 6; +} + +// If a field is of type list +// ordered and duplicates allowed. +// If max_size and min_size are equal, then fixed size. +message GenericListTypeSpec { + GenericDataTypeSpec element_type_spec = 1;// The element_type + repeated string annotations = 2; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + int32 min_size = 4; // 0 if not present + int32 max_size = 5; // no max size defined if not present + repeated SourceLocation annotation_locations = 6; + repeated StructuredAnnotation structured_annotations = 7; +} +// If a field is of type "unordered_set" +// Unordered and duplicates not allowed +message GenericUnorderedSetTypeSpec { + GenericDataTypeSpec element_type_spec = 1;// The element_type + repeated string annotations = 2; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + int32 min_size = 4; // 0 if not present + int32 max_size = 5; // no max size defined if not present + repeated SourceLocation annotation_locations = 6; + repeated StructuredAnnotation structured_annotations = 7; +} + +message GenericStringSpec { + string name = 1; + string default_value = 2; + int32 min_size = 3; // 0 if not present + int32 max_size = 4; // no max size defined if not present + repeated string annotations = 5; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 6; + repeated StructuredAnnotation structured_annotations = 7; +} +message GenericEnumTypeSpec { + message Member { + string name = 1; + int32 default_value = 2; + repeated string annotations = 3; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 4; + repeated StructuredAnnotation structured_annotations = 5; + } + repeated Member members = 1; + repeated string annotations = 2; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 3; + repeated StructuredAnnotation structured_annotations = 4; +} +message GenericSerializableEnumTypeSpec { + message Member { + string name = 1; + bytes value = 2; + int32 default_value = 3; + repeated string annotations = 4; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 5; + repeated StructuredAnnotation structured_annotations = 6; + } + GenericBitTypeSpec underlying_type = 1; + repeated Member members = 2; + repeated string annotations = 3; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 4; + repeated StructuredAnnotation structured_annotations = 5; +} + +// User defined types +message GenericNewTypeTranslation { + message SdnString {} + + // the URI uniquely identifies the translation in order to enable the + // P4Runtime agent to perform value-mapping appropriately when required. It is + // recommended that the URI includes at least the P4 architecture name and the + // type name. In case of target specific types, target_name should be included + string uri = 1; + + // The object is either represented as an unsigned integer with a bitwidth of + // `sdn_bitwidth`, or as a string. + oneof sdn_type { + int32 sdn_bitwidth = 2; + SdnString sdn_string = 3; + } +} +message GenericNewTypeSpec { + oneof representation { + // if no @p4runtime_translation annotation present + GenericDataTypeSpec original_type = 1; + // if @p4runtime_translation annotation present + GenericNewTypeTranslation translated_type = 2; + } + // for other annotations (not @p4runtime_translation) + repeated string annotations = 3; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 5; + repeated StructuredAnnotation structured_annotations = 4; +} + +////// End: GenericTables diff --git a/proto/p4/v1/p4data.proto b/proto/p4/v1/p4data.proto index f5b80a9e..05b51ebc 100644 --- a/proto/p4/v1/p4data.proto +++ b/proto/p4/v1/p4data.proto @@ -34,7 +34,6 @@ message P4Data { bytes enum_value = 12; // serializable enums only } } - message P4Varbit { bytes bitstring = 1; int32 bitwidth = 2; // dynamic bitwidth of the field @@ -69,3 +68,33 @@ message P4HeaderUnionStack { // size of the header union stack, which is specified in P4Info. repeated P4HeaderUnion entries = 1; } +////// Begin : GenericTables messages +message GenericData { + oneof data { + bytes bitstring = 1; + GenericVarbit varbitstring = 2; + bool bool = 3; + GenericStructLike generic_struct = 4; // one struct + GenericList generic_list = 5; // list of bytes/bool/structs/strings/enums/enum_values. + GenericUnorderedSet generic_unordered_set = 6; // unordered_set of bytes/bool/structs/strings/enums/enum_values. + string string = 7; // control plane arbitrary length string + string enum = 8; // safe (non-serializable) enums only + bytes enum_value = 9; // serializable enums only + } +} +message GenericStructLike { + repeated GenericData members = 1; +} +message GenericList { + repeated GenericData members = 1; +} +message GenericUnorderedSet { + repeated GenericData members = 1; +} + +message GenericVarbit { + bytes bitstring = 1; + int32 bitwidth = 2; // dynamic bitwidth of the field +} + +////// End: GenericTables diff --git a/proto/p4/v1/p4runtime.proto b/proto/p4/v1/p4runtime.proto index 0cab29b0..30e98ab1 100755 --- a/proto/p4/v1/p4runtime.proto +++ b/proto/p4/v1/p4runtime.proto @@ -138,6 +138,7 @@ message Entity { ValueSetEntry value_set_entry = 10; RegisterEntry register_entry = 11; DigestEntry digest_entry = 12; + GenericTableEntry generic_table_entry = 13; } } @@ -223,6 +224,10 @@ message TableEntry { // the first two cases above, but newer P4Runtime API servers will. // Added in 1.4.0. bool is_const = 13; + // list of GenericTableEntry + // The match fields aren't used. + // Only the union fields and priority + repeated GenericTableEntry resources = 14; } // field_match_type ::= exact | ternary | lpm | range | optional @@ -526,6 +531,7 @@ message DigestEntry { Config config = 2; } + //------------------------------------------------------------------------------ message StreamMessageRequest { oneof update { @@ -811,3 +817,71 @@ message CapabilitiesResponse { // version of the P4Runtime API currently implemented by the server. string p4runtime_api_version = 1; } + +////// Begin : GenericTables messages +message GenericFieldMatch { + uint32 field_id = 1; + + message Exact { + GenericData value = 1; + } + message Ternary { + bytes value = 1; + bytes mask = 2; + } + message LPM { + bytes value = 1; + int32 prefix_len = 2; // in bits + } + // A Range is logically a set that contains all values numerically between + // 'low' and 'high' inclusively. + message Range { + bytes low = 1; + bytes high = 2; + } + // If the Optional match should be a wildcard, the FieldMatch must be omitted. + // Otherwise, this behaves like an exact match. + message Optional { + GenericData value = 1; + } + + oneof field_match_type { + Exact exact = 2; + Ternary ternary = 3; + LPM lpm = 4; + Range range = 6; + Optional optional = 7; + // Architecture-specific match value; it corresponds to the other_match_type + // in the P4Info MatchField message. + .google.protobuf.Any other = 100; + } +} + +message GenericTableEntry { + uint32 table_id = 1; + repeated GenericFieldMatch match = 2; + TableDataUnion table_data_union = 3; + // Should only be set if the match implies a TCAM lookup, i.e. at least one of + // the match fields is Optional, Ternary or Range. A higher number indicates + // higher priority. Only a highest priority entry that matches the packet + // must be selected. Multiple entries in the same table with the same + // priority value are permitted. See Section "TableEntry" in the + // specification for details of the behavior. + int32 priority = 4; + // Set to true if the table entry is being used to update the single default + // entry of the table. If true, the "match" field must be empty and + // the "data union" field must be populated with a valid data union. + bool is_default_entry = 5; + // Arbitrary metadata from the controller that is opaque to the target. + bytes metadata = 6; +} + +message TableDataUnion { + uint32 union_id = 1; + message Param { + uint32 param_id = 2; + GenericData value = 3; + } + repeated Param params = 4; +} +////// End: GenericTables diff --git a/py/p4/config/v1/p4info_pb2.py b/py/p4/config/v1/p4info_pb2.py index 30bce078..4dfda78e 100644 --- a/py/p4/config/v1/p4info_pb2.py +++ b/py/p4/config/v1/p4info_pb2.py @@ -21,7 +21,7 @@ syntax='proto3', serialized_options=b'Z+github.com/p4lang/p4runtime/go/p4/config/v1', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x19p4/config/v1/p4info.proto\x12\x0cp4.config.v1\x1a\x19google/protobuf/any.proto\x1a\x1ap4/config/v1/p4types.proto\"\x88\x05\n\x06P4Info\x12\'\n\x08pkg_info\x18\x01 \x01(\x0b\x32\x15.p4.config.v1.PkgInfo\x12#\n\x06tables\x18\x02 \x03(\x0b\x32\x13.p4.config.v1.Table\x12%\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x14.p4.config.v1.Action\x12\x34\n\x0f\x61\x63tion_profiles\x18\x04 \x03(\x0b\x32\x1b.p4.config.v1.ActionProfile\x12\'\n\x08\x63ounters\x18\x05 \x03(\x0b\x32\x15.p4.config.v1.Counter\x12\x34\n\x0f\x64irect_counters\x18\x06 \x03(\x0b\x32\x1b.p4.config.v1.DirectCounter\x12#\n\x06meters\x18\x07 \x03(\x0b\x32\x13.p4.config.v1.Meter\x12\x30\n\rdirect_meters\x18\x08 \x03(\x0b\x32\x19.p4.config.v1.DirectMeter\x12J\n\x1a\x63ontroller_packet_metadata\x18\t \x03(\x0b\x32&.p4.config.v1.ControllerPacketMetadata\x12*\n\nvalue_sets\x18\n \x03(\x0b\x32\x16.p4.config.v1.ValueSet\x12)\n\tregisters\x18\x0b \x03(\x0b\x32\x16.p4.config.v1.Register\x12%\n\x07\x64igests\x18\x0c \x03(\x0b\x32\x14.p4.config.v1.Digest\x12%\n\x07\x65xterns\x18\x64 \x03(\x0b\x32\x14.p4.config.v1.Extern\x12,\n\ttype_info\x18\xc8\x01 \x01(\x0b\x32\x18.p4.config.v1.P4TypeInfo\"3\n\rDocumentation\x12\r\n\x05\x62rief\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\xa9\x02\n\x07PkgInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12(\n\x03\x64oc\x18\x03 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x0c\n\x04\x61rch\x18\x05 \x01(\t\x12\x14\n\x0corganization\x18\x06 \x01(\t\x12\x0f\n\x07\x63ontact\x18\x07 \x01(\t\x12\x0b\n\x03url\x18\x08 \x01(\t\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x87\x02\n\x05P4Ids\"\xfd\x01\n\x06Prefix\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TION\x10\x01\x12\t\n\x05TABLE\x10\x02\x12\r\n\tVALUE_SET\x10\x03\x12\x15\n\x11\x43ONTROLLER_HEADER\x10\x04\x12\x15\n\x11PSA_EXTERNS_START\x10\x10\x12\x12\n\x0e\x41\x43TION_PROFILE\x10\x11\x12\x0b\n\x07\x43OUNTER\x10\x12\x12\x12\n\x0e\x44IRECT_COUNTER\x10\x13\x12\t\n\x05METER\x10\x14\x12\x10\n\x0c\x44IRECT_METER\x10\x15\x12\x0c\n\x08REGISTER\x10\x16\x12\n\n\x06\x44IGEST\x10\x17\x12\x18\n\x13OTHER_EXTERNS_START\x10\x80\x01\x12\x08\n\x03MAX\x10\xff\x01\"\xf2\x01\n\x08Preamble\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x06\x45xtern\x12\x16\n\x0e\x65xtern_type_id\x18\x01 \x01(\r\x12\x18\n\x10\x65xtern_type_name\x18\x02 \x01(\t\x12/\n\tinstances\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.ExternInstance\"^\n\x0e\x45xternInstance\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\"\n\x04info\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\"\xdc\x03\n\nMatchField\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12\x38\n\nmatch_type\x18\x05 \x01(\x0e\x32\".p4.config.v1.MatchField.MatchTypeH\x00\x12\x1a\n\x10other_match_type\x18\x07 \x01(\tH\x00\x12(\n\x03\x64oc\x18\x06 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x08 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"V\n\tMatchType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x45XACT\x10\x02\x12\x07\n\x03LPM\x10\x03\x12\x0b\n\x07TERNARY\x10\x04\x12\t\n\x05RANGE\x10\x05\x12\x0c\n\x08OPTIONAL\x10\x06\x42\x07\n\x05match\"\xde\x03\n\x05Table\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12.\n\x0cmatch_fields\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12,\n\x0b\x61\x63tion_refs\x18\x03 \x03(\x0b\x32\x17.p4.config.v1.ActionRef\x12\x1f\n\x17\x63onst_default_action_id\x18\x04 \x01(\r\x12\x19\n\x11implementation_id\x18\x06 \x01(\r\x12\x1b\n\x13\x64irect_resource_ids\x18\x07 \x03(\r\x12\x0c\n\x04size\x18\x08 \x01(\x03\x12\x46\n\x15idle_timeout_behavior\x18\t \x01(\x0e\x32\'.p4.config.v1.Table.IdleTimeoutBehavior\x12\x16\n\x0eis_const_table\x18\n \x01(\x08\x12\x1b\n\x13has_initial_entries\x18\x0b \x01(\x08\x12.\n\x10other_properties\x18\x64 \x01(\x0b\x32\x14.google.protobuf.Any\"9\n\x13IdleTimeoutBehavior\x12\x0e\n\nNO_TIMEOUT\x10\x00\x12\x12\n\x0eNOTIFY_CONTROL\x10\x01\"\x9c\x02\n\tActionRef\x12\n\n\x02id\x18\x01 \x01(\r\x12,\n\x05scope\x18\x03 \x01(\x0e\x32\x1d.p4.config.v1.ActionRef.Scope\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"@\n\x05Scope\x12\x15\n\x11TABLE_AND_DEFAULT\x10\x00\x12\x0e\n\nTABLE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45\x46\x41ULT_ONLY\x10\x02\"\x81\x03\n\x06\x41\x63tion\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12*\n\x06params\x18\x02 \x03(\x0b\x32\x1a.p4.config.v1.Action.Param\x1a\xa0\x02\n\x05Param\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x08 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x06 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x82\x03\n\rActionProfile\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x11\n\ttable_ids\x18\x02 \x03(\r\x12\x15\n\rwith_selector\x18\x03 \x01(\x08\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x16\n\x0emax_group_size\x18\x05 \x01(\x05\x12\x42\n\x0esum_of_weights\x18\x06 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfWeightsH\x00\x12\x42\n\x0esum_of_members\x18\x07 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfMembersH\x00\x1a\x0e\n\x0cSumOfWeights\x1a\x44\n\x0cSumOfMembers\x12\x1e\n\x11max_member_weight\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x14\n\x12_max_member_weightB\x19\n\x17selector_size_semantics\"v\n\x0b\x43ounterSpec\x12,\n\x04unit\x18\x01 \x01(\x0e\x32\x1e.p4.config.v1.CounterSpec.Unit\"9\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\x12\x08\n\x04\x42OTH\x10\x03\"\x9e\x01\n\x07\x43ounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"{\n\rDirectCounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"h\n\tMeterSpec\x12*\n\x04unit\x18\x01 \x01(\x0e\x32\x1c.p4.config.v1.MeterSpec.Unit\"/\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\"\x9a\x01\n\x05Meter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"w\n\x0b\x44irectMeter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"\x83\x03\n\x18\x43ontrollerPacketMetadata\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x41\n\x08metadata\x18\x02 \x03(\x0b\x32/.p4.config.v1.ControllerPacketMetadata.Metadata\x1a\xf9\x01\n\x08Metadata\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12,\n\ttype_name\x18\x05 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x08ValueSet\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x05match\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12\x0c\n\x04size\x18\x03 \x01(\x05\"\xa7\x01\n\x08Register\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\x12\x0c\n\x04size\x18\x03 \x01(\x05\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"c\n\x06\x44igest\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpecB-Z+github.com/p4lang/p4runtime/go/p4/config/v1b\x06proto3' + serialized_pb=b'\n\x19p4/config/v1/p4info.proto\x12\x0cp4.config.v1\x1a\x19google/protobuf/any.proto\x1a\x1ap4/config/v1/p4types.proto\"\xe1\x05\n\x06P4Info\x12\'\n\x08pkg_info\x18\x01 \x01(\x0b\x32\x15.p4.config.v1.PkgInfo\x12#\n\x06tables\x18\x02 \x03(\x0b\x32\x13.p4.config.v1.Table\x12%\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x14.p4.config.v1.Action\x12\x34\n\x0f\x61\x63tion_profiles\x18\x04 \x03(\x0b\x32\x1b.p4.config.v1.ActionProfile\x12\'\n\x08\x63ounters\x18\x05 \x03(\x0b\x32\x15.p4.config.v1.Counter\x12\x34\n\x0f\x64irect_counters\x18\x06 \x03(\x0b\x32\x1b.p4.config.v1.DirectCounter\x12#\n\x06meters\x18\x07 \x03(\x0b\x32\x13.p4.config.v1.Meter\x12\x30\n\rdirect_meters\x18\x08 \x03(\x0b\x32\x19.p4.config.v1.DirectMeter\x12J\n\x1a\x63ontroller_packet_metadata\x18\t \x03(\x0b\x32&.p4.config.v1.ControllerPacketMetadata\x12*\n\nvalue_sets\x18\n \x03(\x0b\x32\x16.p4.config.v1.ValueSet\x12)\n\tregisters\x18\x0b \x03(\x0b\x32\x16.p4.config.v1.Register\x12%\n\x07\x64igests\x18\x0c \x03(\x0b\x32\x14.p4.config.v1.Digest\x12\x32\n\x0egeneric_tables\x18\r \x03(\x0b\x32\x1a.p4.config.v1.GenericTable\x12#\n\x06unions\x18\x0e \x03(\x0b\x32\x13.p4.config.v1.Union\x12%\n\x07\x65xterns\x18\x64 \x03(\x0b\x32\x14.p4.config.v1.Extern\x12,\n\ttype_info\x18\xc8\x01 \x01(\x0b\x32\x18.p4.config.v1.P4TypeInfo\"3\n\rDocumentation\x12\r\n\x05\x62rief\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\xa9\x02\n\x07PkgInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12(\n\x03\x64oc\x18\x03 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x0c\n\x04\x61rch\x18\x05 \x01(\t\x12\x14\n\x0corganization\x18\x06 \x01(\t\x12\x0f\n\x07\x63ontact\x18\x07 \x01(\t\x12\x0b\n\x03url\x18\x08 \x01(\t\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x9a\x02\n\x05P4Ids\"\x90\x02\n\x06Prefix\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TION\x10\x01\x12\t\n\x05TABLE\x10\x02\x12\r\n\tVALUE_SET\x10\x03\x12\x15\n\x11\x43ONTROLLER_HEADER\x10\x04\x12\x15\n\x11PSA_EXTERNS_START\x10\x10\x12\x12\n\x0e\x41\x43TION_PROFILE\x10\x11\x12\x0b\n\x07\x43OUNTER\x10\x12\x12\x12\n\x0e\x44IRECT_COUNTER\x10\x13\x12\t\n\x05METER\x10\x14\x12\x10\n\x0c\x44IRECT_METER\x10\x15\x12\x0c\n\x08REGISTER\x10\x16\x12\n\n\x06\x44IGEST\x10\x17\x12\x11\n\rGENERIC_TABLE\x10\x18\x12\x18\n\x13OTHER_EXTERNS_START\x10\x80\x01\x12\x08\n\x03MAX\x10\xff\x01\"@\n\x10GenericTableType\",\n\x06Prefix\x12\x18\n\x14GENERIC_TABLES_START\x10\x00\x12\x08\n\x03MAX\x10\xff\x01\"\xf2\x01\n\x08Preamble\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x06\x45xtern\x12\x16\n\x0e\x65xtern_type_id\x18\x01 \x01(\r\x12\x18\n\x10\x65xtern_type_name\x18\x02 \x01(\t\x12/\n\tinstances\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.ExternInstance\"^\n\x0e\x45xternInstance\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\"\n\x04info\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\"\xdc\x03\n\nMatchField\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12\x38\n\nmatch_type\x18\x05 \x01(\x0e\x32\".p4.config.v1.MatchField.MatchTypeH\x00\x12\x1a\n\x10other_match_type\x18\x07 \x01(\tH\x00\x12(\n\x03\x64oc\x18\x06 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x08 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"V\n\tMatchType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x45XACT\x10\x02\x12\x07\n\x03LPM\x10\x03\x12\x0b\n\x07TERNARY\x10\x04\x12\t\n\x05RANGE\x10\x05\x12\x0c\n\x08OPTIONAL\x10\x06\x42\x07\n\x05match\"\xde\x03\n\x05Table\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12.\n\x0cmatch_fields\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12,\n\x0b\x61\x63tion_refs\x18\x03 \x03(\x0b\x32\x17.p4.config.v1.ActionRef\x12\x1f\n\x17\x63onst_default_action_id\x18\x04 \x01(\r\x12\x19\n\x11implementation_id\x18\x06 \x01(\r\x12\x1b\n\x13\x64irect_resource_ids\x18\x07 \x03(\r\x12\x0c\n\x04size\x18\x08 \x01(\x03\x12\x46\n\x15idle_timeout_behavior\x18\t \x01(\x0e\x32\'.p4.config.v1.Table.IdleTimeoutBehavior\x12\x16\n\x0eis_const_table\x18\n \x01(\x08\x12\x1b\n\x13has_initial_entries\x18\x0b \x01(\x08\x12.\n\x10other_properties\x18\x64 \x01(\x0b\x32\x14.google.protobuf.Any\"9\n\x13IdleTimeoutBehavior\x12\x0e\n\nNO_TIMEOUT\x10\x00\x12\x12\n\x0eNOTIFY_CONTROL\x10\x01\"\x9c\x02\n\tActionRef\x12\n\n\x02id\x18\x01 \x01(\r\x12,\n\x05scope\x18\x03 \x01(\x0e\x32\x1d.p4.config.v1.ActionRef.Scope\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"@\n\x05Scope\x12\x15\n\x11TABLE_AND_DEFAULT\x10\x00\x12\x0e\n\nTABLE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45\x46\x41ULT_ONLY\x10\x02\"\x81\x03\n\x06\x41\x63tion\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12*\n\x06params\x18\x02 \x03(\x0b\x32\x1a.p4.config.v1.Action.Param\x1a\xa0\x02\n\x05Param\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x08 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x06 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x82\x03\n\rActionProfile\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x11\n\ttable_ids\x18\x02 \x03(\r\x12\x15\n\rwith_selector\x18\x03 \x01(\x08\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x16\n\x0emax_group_size\x18\x05 \x01(\x05\x12\x42\n\x0esum_of_weights\x18\x06 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfWeightsH\x00\x12\x42\n\x0esum_of_members\x18\x07 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfMembersH\x00\x1a\x0e\n\x0cSumOfWeights\x1a\x44\n\x0cSumOfMembers\x12\x1e\n\x11max_member_weight\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x14\n\x12_max_member_weightB\x19\n\x17selector_size_semantics\"v\n\x0b\x43ounterSpec\x12,\n\x04unit\x18\x01 \x01(\x0e\x32\x1e.p4.config.v1.CounterSpec.Unit\"9\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\x12\x08\n\x04\x42OTH\x10\x03\"\x9e\x01\n\x07\x43ounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"{\n\rDirectCounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"h\n\tMeterSpec\x12*\n\x04unit\x18\x01 \x01(\x0e\x32\x1c.p4.config.v1.MeterSpec.Unit\"/\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\"\x9a\x01\n\x05Meter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"w\n\x0b\x44irectMeter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"\x83\x03\n\x18\x43ontrollerPacketMetadata\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x41\n\x08metadata\x18\x02 \x03(\x0b\x32/.p4.config.v1.ControllerPacketMetadata.Metadata\x1a\xf9\x01\n\x08Metadata\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12,\n\ttype_name\x18\x05 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x08ValueSet\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x05match\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12\x0c\n\x04size\x18\x03 \x01(\x05\"\xa7\x01\n\x08Register\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\x12\x0c\n\x04size\x18\x03 \x01(\x05\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"c\n\x06\x44igest\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\"\xe0\x03\n\x11GenericMatchField\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x34\n\ttype_spec\x18\x03 \x01(\x0b\x32!.p4.config.v1.GenericDataTypeSpec\x12?\n\nmatch_type\x18\x04 \x01(\x0e\x32).p4.config.v1.GenericMatchField.MatchTypeH\x00\x12\x1a\n\x10other_match_type\x18\x05 \x01(\tH\x00\x12(\n\x03\x64oc\x18\x06 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x13\n\x0b\x61nnotations\x18\x07 \x03(\t\x12\x42\n\x16structured_annotations\x18\x08 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x12:\n\x14\x61nnotation_locations\x18\t \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\"V\n\tMatchType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x45XACT\x10\x02\x12\x07\n\x03LPM\x10\x03\x12\x0b\n\x07TERNARY\x10\x04\x12\t\n\x05RANGE\x10\x05\x12\x0c\n\x08OPTIONAL\x10\x06\x42\x07\n\x05match\"\x9a\x02\n\x08UnionRef\x12\n\n\x02id\x18\x01 \x01(\r\x12+\n\x05scope\x18\x03 \x01(\x0e\x32\x1c.p4.config.v1.UnionRef.Scope\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"@\n\x05Scope\x12\x15\n\x11TABLE_AND_DEFAULT\x10\x00\x12\x0e\n\nTABLE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45\x46\x41ULT_ONLY\x10\x02\"\xf5\x02\n\x05Union\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12)\n\x06params\x18\x02 \x03(\x0b\x32\x19.p4.config.v1.Union.Param\x1a\x96\x02\n\x05Param\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12\x34\n\ttype_spec\x18\x04 \x01(\x0b\x32!.p4.config.v1.GenericDataTypeSpec\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\"}\n\x0cGenericTable\x12\x0f\n\x07type_id\x18\x01 \x01(\r\x12\x11\n\ttype_name\x18\x02 \x01(\t\x12\x12\n\nproperties\x18\x03 \x03(\t\x12\x35\n\tinstances\x18\x04 \x03(\x0b\x32\".p4.config.v1.GenericTableInstance\"\x89\x02\n\x14GenericTableInstance\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12=\n\x14generic_match_fields\x18\x02 \x03(\x0b\x32\x1f.p4.config.v1.GenericMatchField\x12*\n\nunion_refs\x18\x03 \x03(\x0b\x32\x16.p4.config.v1.UnionRef\x12\x1e\n\x16\x63onst_default_union_id\x18\x04 \x01(\r\x12\x0c\n\x04size\x18\x05 \x01(\x03\x12.\n\x10other_properties\x18\x64 \x01(\x0b\x32\x14.google.protobuf.AnyB-Z+github.com/p4lang/p4runtime/go/p4/config/v1b\x06proto3' , dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,p4_dot_config_dot_v1_dot_p4types__pb2.DESCRIPTOR,]) @@ -100,23 +100,53 @@ type=None, create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( - name='OTHER_EXTERNS_START', index=13, number=128, + name='GENERIC_TABLE', index=13, number=24, serialized_options=None, type=None, create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( - name='MAX', index=14, number=255, + name='OTHER_EXTERNS_START', index=14, number=128, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAX', index=15, number=255, serialized_options=None, type=None, create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=1113, - serialized_end=1366, + serialized_start=1202, + serialized_end=1474, ) _sym_db.RegisterEnumDescriptor(_P4IDS_PREFIX) +_GENERICTABLETYPE_PREFIX = _descriptor.EnumDescriptor( + name='Prefix', + full_name='p4.config.v1.GenericTableType.Prefix', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='GENERIC_TABLES_START', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAX', index=1, number=255, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=1496, + serialized_end=1540, +) +_sym_db.RegisterEnumDescriptor(_GENERICTABLETYPE_PREFIX) + _MATCHFIELD_MATCHTYPE = _descriptor.EnumDescriptor( name='MatchType', full_name='p4.config.v1.MatchField.MatchType', @@ -157,8 +187,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2200, - serialized_end=2286, + serialized_start=2374, + serialized_end=2460, ) _sym_db.RegisterEnumDescriptor(_MATCHFIELD_MATCHTYPE) @@ -182,8 +212,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2719, - serialized_end=2776, + serialized_start=2893, + serialized_end=2950, ) _sym_db.RegisterEnumDescriptor(_TABLE_IDLETIMEOUTBEHAVIOR) @@ -212,8 +242,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2999, - serialized_end=3063, + serialized_start=3173, + serialized_end=3237, ) _sym_db.RegisterEnumDescriptor(_ACTIONREF_SCOPE) @@ -247,8 +277,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3903, - serialized_end=3960, + serialized_start=4077, + serialized_end=4134, ) _sym_db.RegisterEnumDescriptor(_COUNTERSPEC_UNIT) @@ -277,11 +307,86 @@ ], containing_type=None, serialized_options=None, - serialized_start=3903, - serialized_end=3950, + serialized_start=4077, + serialized_end=4124, ) _sym_db.RegisterEnumDescriptor(_METERSPEC_UNIT) +_GENERICMATCHFIELD_MATCHTYPE = _descriptor.EnumDescriptor( + name='MatchType', + full_name='p4.config.v1.GenericMatchField.MatchType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNSPECIFIED', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='EXACT', index=1, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LPM', index=2, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TERNARY', index=3, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RANGE', index=4, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='OPTIONAL', index=5, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2374, + serialized_end=2460, +) +_sym_db.RegisterEnumDescriptor(_GENERICMATCHFIELD_MATCHTYPE) + +_UNIONREF_SCOPE = _descriptor.EnumDescriptor( + name='Scope', + full_name='p4.config.v1.UnionRef.Scope', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='TABLE_AND_DEFAULT', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TABLE_ONLY', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DEFAULT_ONLY', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=3173, + serialized_end=3237, +) +_sym_db.RegisterEnumDescriptor(_UNIONREF_SCOPE) + _P4INFO = _descriptor.Descriptor( name='P4Info', @@ -376,14 +481,28 @@ is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='externs', full_name='p4.config.v1.P4Info.externs', index=12, + name='generic_tables', full_name='p4.config.v1.P4Info.generic_tables', index=12, + number=13, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unions', full_name='p4.config.v1.P4Info.unions', index=13, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='externs', full_name='p4.config.v1.P4Info.externs', index=14, number=100, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='type_info', full_name='p4.config.v1.P4Info.type_info', index=13, + name='type_info', full_name='p4.config.v1.P4Info.type_info', index=15, number=200, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, @@ -402,7 +521,7 @@ oneofs=[ ], serialized_start=99, - serialized_end=747, + serialized_end=836, ) @@ -440,8 +559,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=749, - serialized_end=800, + serialized_start=838, + serialized_end=889, ) @@ -535,8 +654,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=803, - serialized_end=1100, + serialized_start=892, + serialized_end=1189, ) @@ -561,8 +680,34 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1103, - serialized_end=1366, + serialized_start=1192, + serialized_end=1474, +) + + +_GENERICTABLETYPE = _descriptor.Descriptor( + name='GenericTableType', + full_name='p4.config.v1.GenericTableType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _GENERICTABLETYPE_PREFIX, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1476, + serialized_end=1540, ) @@ -635,8 +780,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1369, - serialized_end=1611, + serialized_start=1543, + serialized_end=1785, ) @@ -681,8 +826,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1613, - serialized_end=1720, + serialized_start=1787, + serialized_end=1894, ) @@ -720,8 +865,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1722, - serialized_end=1816, + serialized_start=1896, + serialized_end=1990, ) @@ -821,8 +966,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1819, - serialized_end=2295, + serialized_start=1993, + serialized_end=2469, ) @@ -924,8 +1069,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2298, - serialized_end=2776, + serialized_start=2472, + serialized_end=2950, ) @@ -985,8 +1130,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2779, - serialized_end=3063, + serialized_start=2953, + serialized_end=3237, ) @@ -1066,8 +1211,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3163, - serialized_end=3451, + serialized_start=3337, + serialized_end=3625, ) _ACTION = _descriptor.Descriptor( @@ -1104,8 +1249,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3066, - serialized_end=3451, + serialized_start=3240, + serialized_end=3625, ) @@ -1129,8 +1274,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3729, - serialized_end=3743, + serialized_start=3903, + serialized_end=3917, ) _ACTIONPROFILE_SUMOFMEMBERS = _descriptor.Descriptor( @@ -1165,8 +1310,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3745, - serialized_end=3813, + serialized_start=3919, + serialized_end=3987, ) _ACTIONPROFILE = _descriptor.Descriptor( @@ -1243,8 +1388,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3454, - serialized_end=3840, + serialized_start=3628, + serialized_end=4014, ) @@ -1276,8 +1421,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3842, - serialized_end=3960, + serialized_start=4016, + serialized_end=4134, ) @@ -1329,8 +1474,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3963, - serialized_end=4121, + serialized_start=4137, + serialized_end=4295, ) @@ -1375,8 +1520,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4123, - serialized_end=4246, + serialized_start=4297, + serialized_end=4420, ) @@ -1408,8 +1553,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4248, - serialized_end=4352, + serialized_start=4422, + serialized_end=4526, ) @@ -1461,8 +1606,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4355, - serialized_end=4509, + serialized_start=4529, + serialized_end=4683, ) @@ -1507,8 +1652,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4511, - serialized_end=4630, + serialized_start=4685, + serialized_end=4804, ) @@ -1581,8 +1726,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4771, - serialized_end=5020, + serialized_start=4945, + serialized_end=5194, ) _CONTROLLERPACKETMETADATA = _descriptor.Descriptor( @@ -1619,8 +1764,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4633, - serialized_end=5020, + serialized_start=4807, + serialized_end=5194, ) @@ -1665,8 +1810,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5022, - serialized_end=5129, + serialized_start=5196, + serialized_end=5303, ) @@ -1718,8 +1863,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5132, - serialized_end=5299, + serialized_start=5306, + serialized_end=5473, ) @@ -1757,8 +1902,395 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5301, - serialized_end=5400, + serialized_start=5475, + serialized_end=5574, +) + + +_GENERICMATCHFIELD = _descriptor.Descriptor( + name='GenericMatchField', + full_name='p4.config.v1.GenericMatchField', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='p4.config.v1.GenericMatchField.id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.GenericMatchField.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='type_spec', full_name='p4.config.v1.GenericMatchField.type_spec', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='match_type', full_name='p4.config.v1.GenericMatchField.match_type', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='other_match_type', full_name='p4.config.v1.GenericMatchField.other_match_type', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='doc', full_name='p4.config.v1.GenericMatchField.doc', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericMatchField.annotations', index=6, + number=7, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericMatchField.structured_annotations', index=7, + number=8, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericMatchField.annotation_locations', index=8, + number=9, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _GENERICMATCHFIELD_MATCHTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='match', full_name='p4.config.v1.GenericMatchField.match', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=5577, + serialized_end=6057, +) + + +_UNIONREF = _descriptor.Descriptor( + name='UnionRef', + full_name='p4.config.v1.UnionRef', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='p4.config.v1.UnionRef.id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='scope', full_name='p4.config.v1.UnionRef.scope', index=1, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.UnionRef.annotations', index=2, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.UnionRef.annotation_locations', index=3, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.UnionRef.structured_annotations', index=4, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _UNIONREF_SCOPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6060, + serialized_end=6342, +) + + +_UNION_PARAM = _descriptor.Descriptor( + name='Param', + full_name='p4.config.v1.Union.Param', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='p4.config.v1.Union.Param.id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.Union.Param.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.Union.Param.annotations', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='type_spec', full_name='p4.config.v1.Union.Param.type_spec', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='doc', full_name='p4.config.v1.Union.Param.doc', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.Union.Param.structured_annotations', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.Union.Param.annotation_locations', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6440, + serialized_end=6718, +) + +_UNION = _descriptor.Descriptor( + name='Union', + full_name='p4.config.v1.Union', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='preamble', full_name='p4.config.v1.Union.preamble', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='params', full_name='p4.config.v1.Union.params', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_UNION_PARAM, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6345, + serialized_end=6718, +) + + +_GENERICTABLE = _descriptor.Descriptor( + name='GenericTable', + full_name='p4.config.v1.GenericTable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='type_id', full_name='p4.config.v1.GenericTable.type_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='type_name', full_name='p4.config.v1.GenericTable.type_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='properties', full_name='p4.config.v1.GenericTable.properties', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='instances', full_name='p4.config.v1.GenericTable.instances', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6720, + serialized_end=6845, +) + + +_GENERICTABLEINSTANCE = _descriptor.Descriptor( + name='GenericTableInstance', + full_name='p4.config.v1.GenericTableInstance', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='preamble', full_name='p4.config.v1.GenericTableInstance.preamble', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='generic_match_fields', full_name='p4.config.v1.GenericTableInstance.generic_match_fields', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='union_refs', full_name='p4.config.v1.GenericTableInstance.union_refs', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='const_default_union_id', full_name='p4.config.v1.GenericTableInstance.const_default_union_id', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='size', full_name='p4.config.v1.GenericTableInstance.size', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='other_properties', full_name='p4.config.v1.GenericTableInstance.other_properties', index=5, + number=100, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6848, + serialized_end=7113, ) _P4INFO.fields_by_name['pkg_info'].message_type = _PKGINFO @@ -1773,12 +2305,15 @@ _P4INFO.fields_by_name['value_sets'].message_type = _VALUESET _P4INFO.fields_by_name['registers'].message_type = _REGISTER _P4INFO.fields_by_name['digests'].message_type = _DIGEST +_P4INFO.fields_by_name['generic_tables'].message_type = _GENERICTABLE +_P4INFO.fields_by_name['unions'].message_type = _UNION _P4INFO.fields_by_name['externs'].message_type = _EXTERN _P4INFO.fields_by_name['type_info'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._P4TYPEINFO _PKGINFO.fields_by_name['doc'].message_type = _DOCUMENTATION _PKGINFO.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION _PKGINFO.fields_by_name['structured_annotations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._STRUCTUREDANNOTATION _P4IDS_PREFIX.containing_type = _P4IDS +_GENERICTABLETYPE_PREFIX.containing_type = _GENERICTABLETYPE _PREAMBLE.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION _PREAMBLE.fields_by_name['doc'].message_type = _DOCUMENTATION _PREAMBLE.fields_by_name['structured_annotations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._STRUCTUREDANNOTATION @@ -1855,10 +2390,39 @@ _REGISTER.fields_by_name['index_type_name'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._P4NAMEDTYPE _DIGEST.fields_by_name['preamble'].message_type = _PREAMBLE _DIGEST.fields_by_name['type_spec'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._P4DATATYPESPEC +_GENERICMATCHFIELD.fields_by_name['type_spec'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._GENERICDATATYPESPEC +_GENERICMATCHFIELD.fields_by_name['match_type'].enum_type = _GENERICMATCHFIELD_MATCHTYPE +_GENERICMATCHFIELD.fields_by_name['doc'].message_type = _DOCUMENTATION +_GENERICMATCHFIELD.fields_by_name['structured_annotations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._STRUCTUREDANNOTATION +_GENERICMATCHFIELD.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION +_GENERICMATCHFIELD_MATCHTYPE.containing_type = _GENERICMATCHFIELD +_GENERICMATCHFIELD.oneofs_by_name['match'].fields.append( + _GENERICMATCHFIELD.fields_by_name['match_type']) +_GENERICMATCHFIELD.fields_by_name['match_type'].containing_oneof = _GENERICMATCHFIELD.oneofs_by_name['match'] +_GENERICMATCHFIELD.oneofs_by_name['match'].fields.append( + _GENERICMATCHFIELD.fields_by_name['other_match_type']) +_GENERICMATCHFIELD.fields_by_name['other_match_type'].containing_oneof = _GENERICMATCHFIELD.oneofs_by_name['match'] +_UNIONREF.fields_by_name['scope'].enum_type = _UNIONREF_SCOPE +_UNIONREF.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION +_UNIONREF.fields_by_name['structured_annotations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._STRUCTUREDANNOTATION +_UNIONREF_SCOPE.containing_type = _UNIONREF +_UNION_PARAM.fields_by_name['type_spec'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._GENERICDATATYPESPEC +_UNION_PARAM.fields_by_name['doc'].message_type = _DOCUMENTATION +_UNION_PARAM.fields_by_name['structured_annotations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._STRUCTUREDANNOTATION +_UNION_PARAM.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION +_UNION_PARAM.containing_type = _UNION +_UNION.fields_by_name['preamble'].message_type = _PREAMBLE +_UNION.fields_by_name['params'].message_type = _UNION_PARAM +_GENERICTABLE.fields_by_name['instances'].message_type = _GENERICTABLEINSTANCE +_GENERICTABLEINSTANCE.fields_by_name['preamble'].message_type = _PREAMBLE +_GENERICTABLEINSTANCE.fields_by_name['generic_match_fields'].message_type = _GENERICMATCHFIELD +_GENERICTABLEINSTANCE.fields_by_name['union_refs'].message_type = _UNIONREF +_GENERICTABLEINSTANCE.fields_by_name['other_properties'].message_type = google_dot_protobuf_dot_any__pb2._ANY DESCRIPTOR.message_types_by_name['P4Info'] = _P4INFO DESCRIPTOR.message_types_by_name['Documentation'] = _DOCUMENTATION DESCRIPTOR.message_types_by_name['PkgInfo'] = _PKGINFO DESCRIPTOR.message_types_by_name['P4Ids'] = _P4IDS +DESCRIPTOR.message_types_by_name['GenericTableType'] = _GENERICTABLETYPE DESCRIPTOR.message_types_by_name['Preamble'] = _PREAMBLE DESCRIPTOR.message_types_by_name['Extern'] = _EXTERN DESCRIPTOR.message_types_by_name['ExternInstance'] = _EXTERNINSTANCE @@ -1877,6 +2441,11 @@ DESCRIPTOR.message_types_by_name['ValueSet'] = _VALUESET DESCRIPTOR.message_types_by_name['Register'] = _REGISTER DESCRIPTOR.message_types_by_name['Digest'] = _DIGEST +DESCRIPTOR.message_types_by_name['GenericMatchField'] = _GENERICMATCHFIELD +DESCRIPTOR.message_types_by_name['UnionRef'] = _UNIONREF +DESCRIPTOR.message_types_by_name['Union'] = _UNION +DESCRIPTOR.message_types_by_name['GenericTable'] = _GENERICTABLE +DESCRIPTOR.message_types_by_name['GenericTableInstance'] = _GENERICTABLEINSTANCE _sym_db.RegisterFileDescriptor(DESCRIPTOR) P4Info = _reflection.GeneratedProtocolMessageType('P4Info', (_message.Message,), { @@ -1907,6 +2476,13 @@ }) _sym_db.RegisterMessage(P4Ids) +GenericTableType = _reflection.GeneratedProtocolMessageType('GenericTableType', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTABLETYPE, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTableType) + }) +_sym_db.RegisterMessage(GenericTableType) + Preamble = _reflection.GeneratedProtocolMessageType('Preamble', (_message.Message,), { 'DESCRIPTOR' : _PREAMBLE, '__module__' : 'p4.config.v1.p4info_pb2' @@ -2065,6 +2641,49 @@ }) _sym_db.RegisterMessage(Digest) +GenericMatchField = _reflection.GeneratedProtocolMessageType('GenericMatchField', (_message.Message,), { + 'DESCRIPTOR' : _GENERICMATCHFIELD, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericMatchField) + }) +_sym_db.RegisterMessage(GenericMatchField) + +UnionRef = _reflection.GeneratedProtocolMessageType('UnionRef', (_message.Message,), { + 'DESCRIPTOR' : _UNIONREF, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.UnionRef) + }) +_sym_db.RegisterMessage(UnionRef) + +Union = _reflection.GeneratedProtocolMessageType('Union', (_message.Message,), { + + 'Param' : _reflection.GeneratedProtocolMessageType('Param', (_message.Message,), { + 'DESCRIPTOR' : _UNION_PARAM, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.Union.Param) + }) + , + 'DESCRIPTOR' : _UNION, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.Union) + }) +_sym_db.RegisterMessage(Union) +_sym_db.RegisterMessage(Union.Param) + +GenericTable = _reflection.GeneratedProtocolMessageType('GenericTable', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTABLE, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTable) + }) +_sym_db.RegisterMessage(GenericTable) + +GenericTableInstance = _reflection.GeneratedProtocolMessageType('GenericTableInstance', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTABLEINSTANCE, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTableInstance) + }) +_sym_db.RegisterMessage(GenericTableInstance) + DESCRIPTOR._options = None # @@protoc_insertion_point(module_scope) diff --git a/py/p4/config/v1/p4types_pb2.py b/py/p4/config/v1/p4types_pb2.py index 1d4b2414..ec027ed3 100644 --- a/py/p4/config/v1/p4types_pb2.py +++ b/py/p4/config/v1/p4types_pb2.py @@ -19,7 +19,7 @@ syntax='proto3', serialized_options=b'Z+github.com/p4lang/p4runtime/go/p4/config/v1', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x1ap4/config/v1/p4types.proto\x12\x0cp4.config.v1\"\xa1\x07\n\nP4TypeInfo\x12\x36\n\x07structs\x18\x01 \x03(\x0b\x32%.p4.config.v1.P4TypeInfo.StructsEntry\x12\x36\n\x07headers\x18\x02 \x03(\x0b\x32%.p4.config.v1.P4TypeInfo.HeadersEntry\x12\x41\n\rheader_unions\x18\x03 \x03(\x0b\x32*.p4.config.v1.P4TypeInfo.HeaderUnionsEntry\x12\x32\n\x05\x65nums\x18\x04 \x03(\x0b\x32#.p4.config.v1.P4TypeInfo.EnumsEntry\x12,\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x1d.p4.config.v1.P4ErrorTypeSpec\x12K\n\x12serializable_enums\x18\x06 \x03(\x0b\x32/.p4.config.v1.P4TypeInfo.SerializableEnumsEntry\x12\x39\n\tnew_types\x18\x07 \x03(\x0b\x32&.p4.config.v1.P4TypeInfo.NewTypesEntry\x1aN\n\x0cStructsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.p4.config.v1.P4StructTypeSpec:\x02\x38\x01\x1aN\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.p4.config.v1.P4HeaderTypeSpec:\x02\x38\x01\x1aX\n\x11HeaderUnionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.p4.config.v1.P4HeaderUnionTypeSpec:\x02\x38\x01\x1aJ\n\nEnumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4EnumTypeSpec:\x02\x38\x01\x1a\x62\n\x16SerializableEnumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.p4.config.v1.P4SerializableEnumTypeSpec:\x02\x38\x01\x1aL\n\rNewTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.p4.config.v1.P4NewTypeSpec:\x02\x38\x01\"\x83\x05\n\x0eP4DataTypeSpec\x12:\n\tbitstring\x18\x01 \x01(\x0b\x32%.p4.config.v1.P4BitstringLikeTypeSpecH\x00\x12(\n\x04\x62ool\x18\x02 \x01(\x0b\x32\x18.p4.config.v1.P4BoolTypeH\x00\x12.\n\x05tuple\x18\x03 \x01(\x0b\x32\x1d.p4.config.v1.P4TupleTypeSpecH\x00\x12+\n\x06struct\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12+\n\x06header\x18\x05 \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12\x31\n\x0cheader_union\x18\x06 \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12;\n\x0cheader_stack\x18\x07 \x01(\x0b\x32#.p4.config.v1.P4HeaderStackTypeSpecH\x00\x12\x46\n\x12header_union_stack\x18\x08 \x01(\x0b\x32(.p4.config.v1.P4HeaderUnionStackTypeSpecH\x00\x12)\n\x04\x65num\x18\t \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12*\n\x05\x65rror\x18\n \x01(\x0b\x32\x19.p4.config.v1.P4ErrorTypeH\x00\x12\x36\n\x11serializable_enum\x18\x0b \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12-\n\x08new_type\x18\x0c \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x42\x0b\n\ttype_spec\"\x1b\n\x0bP4NamedType\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x0c\n\nP4BoolType\"\r\n\x0bP4ErrorType\"\xc5\x02\n\x17P4BitstringLikeTypeSpec\x12*\n\x03\x62it\x18\x01 \x01(\x0b\x32\x1b.p4.config.v1.P4BitTypeSpecH\x00\x12*\n\x03int\x18\x02 \x01(\x0b\x32\x1b.p4.config.v1.P4IntTypeSpecH\x00\x12\x30\n\x06varbit\x18\x03 \x01(\x0b\x32\x1e.p4.config.v1.P4VarbitTypeSpecH\x00\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotationB\x0b\n\ttype_spec\"!\n\rP4BitTypeSpec\x12\x10\n\x08\x62itwidth\x18\x01 \x01(\x05\"!\n\rP4IntTypeSpec\x12\x10\n\x08\x62itwidth\x18\x01 \x01(\x05\"(\n\x10P4VarbitTypeSpec\x12\x14\n\x0cmax_bitwidth\x18\x01 \x01(\x05\"@\n\x0fP4TupleTypeSpec\x12-\n\x07members\x18\x01 \x03(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\"\xa8\x02\n\x10P4StructTypeSpec\x12\x36\n\x07members\x18\x01 \x03(\x0b\x32%.p4.config.v1.P4StructTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1aG\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\"\xb1\x02\n\x10P4HeaderTypeSpec\x12\x36\n\x07members\x18\x01 \x03(\x0b\x32%.p4.config.v1.P4HeaderTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1aP\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\ttype_spec\x18\x02 \x01(\x0b\x32%.p4.config.v1.P4BitstringLikeTypeSpec\"\xac\x02\n\x15P4HeaderUnionTypeSpec\x12;\n\x07members\x18\x01 \x03(\x0b\x32*.p4.config.v1.P4HeaderUnionTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\x41\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x06header\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"P\n\x15P4HeaderStackTypeSpec\x12)\n\x06header\x18\x01 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x0c\n\x04size\x18\x02 \x01(\x05\"[\n\x1aP4HeaderUnionStackTypeSpec\x12/\n\x0cheader_union\x18\x01 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x0c\n\x04size\x18\x02 \x01(\x05\"D\n\x0cKeyValuePair\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.p4.config.v1.Expression\"@\n\x10KeyValuePairList\x12,\n\x08kv_pairs\x18\x01 \x03(\x0b\x32\x1a.p4.config.v1.KeyValuePair\"Z\n\nExpression\x12\x16\n\x0cstring_value\x18\x01 \x01(\tH\x00\x12\x15\n\x0bint64_value\x18\x02 \x01(\x03H\x00\x12\x14\n\nbool_value\x18\x03 \x01(\x08H\x00\x42\x07\n\x05value\"?\n\x0e\x45xpressionList\x12-\n\x0b\x65xpressions\x18\x01 \x03(\x0b\x32\x18.p4.config.v1.Expression\"\xd4\x01\n\x14StructuredAnnotation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x37\n\x0f\x65xpression_list\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.ExpressionListH\x00\x12\x36\n\x0ckv_pair_list\x18\x03 \x01(\x0b\x32\x1e.p4.config.v1.KeyValuePairListH\x00\x12\x35\n\x0fsource_location\x18\x04 \x01(\x0b\x32\x1c.p4.config.v1.SourceLocationB\x06\n\x04\x62ody\"<\n\x0eSourceLocation\x12\x0c\n\x04\x66ile\x18\x01 \x01(\t\x12\x0c\n\x04line\x18\x02 \x01(\x05\x12\x0e\n\x06\x63olumn\x18\x03 \x01(\x05\"\x89\x03\n\x0eP4EnumTypeSpec\x12\x34\n\x07members\x18\x01 \x03(\x0b\x32#.p4.config.v1.P4EnumTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x04 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x03 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\xab\x01\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x04 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x03 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\xe6\x03\n\x1aP4SerializableEnumTypeSpec\x12\x34\n\x0funderlying_type\x18\x01 \x01(\x0b\x32\x1b.p4.config.v1.P4BitTypeSpec\x12@\n\x07members\x18\x02 \x03(\x0b\x32/.p4.config.v1.P4SerializableEnumTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\xba\x01\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\"\n\x0fP4ErrorTypeSpec\x12\x0f\n\x07members\x18\x01 \x03(\t\"\x98\x01\n\x14P4NewTypeTranslation\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x16\n\x0csdn_bitwidth\x18\x02 \x01(\x05H\x00\x12\x42\n\nsdn_string\x18\x03 \x01(\x0b\x32,.p4.config.v1.P4NewTypeTranslation.SdnStringH\x00\x1a\x0b\n\tSdnStringB\n\n\x08sdn_type\"\xac\x02\n\rP4NewTypeSpec\x12\x35\n\roriginal_type\x18\x01 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpecH\x00\x12=\n\x0ftranslated_type\x18\x02 \x01(\x0b\x32\".p4.config.v1.P4NewTypeTranslationH\x00\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotationB\x10\n\x0erepresentationB-Z+github.com/p4lang/p4runtime/go/p4/config/v1b\x06proto3' + serialized_pb=b'\n\x1ap4/config/v1/p4types.proto\x12\x0cp4.config.v1\"\xa1\x07\n\nP4TypeInfo\x12\x36\n\x07structs\x18\x01 \x03(\x0b\x32%.p4.config.v1.P4TypeInfo.StructsEntry\x12\x36\n\x07headers\x18\x02 \x03(\x0b\x32%.p4.config.v1.P4TypeInfo.HeadersEntry\x12\x41\n\rheader_unions\x18\x03 \x03(\x0b\x32*.p4.config.v1.P4TypeInfo.HeaderUnionsEntry\x12\x32\n\x05\x65nums\x18\x04 \x03(\x0b\x32#.p4.config.v1.P4TypeInfo.EnumsEntry\x12,\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x1d.p4.config.v1.P4ErrorTypeSpec\x12K\n\x12serializable_enums\x18\x06 \x03(\x0b\x32/.p4.config.v1.P4TypeInfo.SerializableEnumsEntry\x12\x39\n\tnew_types\x18\x07 \x03(\x0b\x32&.p4.config.v1.P4TypeInfo.NewTypesEntry\x1aN\n\x0cStructsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.p4.config.v1.P4StructTypeSpec:\x02\x38\x01\x1aN\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.p4.config.v1.P4HeaderTypeSpec:\x02\x38\x01\x1aX\n\x11HeaderUnionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.p4.config.v1.P4HeaderUnionTypeSpec:\x02\x38\x01\x1aJ\n\nEnumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4EnumTypeSpec:\x02\x38\x01\x1a\x62\n\x16SerializableEnumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.p4.config.v1.P4SerializableEnumTypeSpec:\x02\x38\x01\x1aL\n\rNewTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.p4.config.v1.P4NewTypeSpec:\x02\x38\x01\"\x83\x05\n\x0eP4DataTypeSpec\x12:\n\tbitstring\x18\x01 \x01(\x0b\x32%.p4.config.v1.P4BitstringLikeTypeSpecH\x00\x12(\n\x04\x62ool\x18\x02 \x01(\x0b\x32\x18.p4.config.v1.P4BoolTypeH\x00\x12.\n\x05tuple\x18\x03 \x01(\x0b\x32\x1d.p4.config.v1.P4TupleTypeSpecH\x00\x12+\n\x06struct\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12+\n\x06header\x18\x05 \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12\x31\n\x0cheader_union\x18\x06 \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12;\n\x0cheader_stack\x18\x07 \x01(\x0b\x32#.p4.config.v1.P4HeaderStackTypeSpecH\x00\x12\x46\n\x12header_union_stack\x18\x08 \x01(\x0b\x32(.p4.config.v1.P4HeaderUnionStackTypeSpecH\x00\x12)\n\x04\x65num\x18\t \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12*\n\x05\x65rror\x18\n \x01(\x0b\x32\x19.p4.config.v1.P4ErrorTypeH\x00\x12\x36\n\x11serializable_enum\x18\x0b \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x12-\n\x08new_type\x18\x0c \x01(\x0b\x32\x19.p4.config.v1.P4NamedTypeH\x00\x42\x0b\n\ttype_spec\"\x1b\n\x0bP4NamedType\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x0c\n\nP4BoolType\"\r\n\x0bP4ErrorType\"\xc5\x02\n\x17P4BitstringLikeTypeSpec\x12*\n\x03\x62it\x18\x01 \x01(\x0b\x32\x1b.p4.config.v1.P4BitTypeSpecH\x00\x12*\n\x03int\x18\x02 \x01(\x0b\x32\x1b.p4.config.v1.P4IntTypeSpecH\x00\x12\x30\n\x06varbit\x18\x03 \x01(\x0b\x32\x1e.p4.config.v1.P4VarbitTypeSpecH\x00\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotationB\x0b\n\ttype_spec\"!\n\rP4BitTypeSpec\x12\x10\n\x08\x62itwidth\x18\x01 \x01(\x05\"!\n\rP4IntTypeSpec\x12\x10\n\x08\x62itwidth\x18\x01 \x01(\x05\"(\n\x10P4VarbitTypeSpec\x12\x14\n\x0cmax_bitwidth\x18\x01 \x01(\x05\"@\n\x0fP4TupleTypeSpec\x12-\n\x07members\x18\x01 \x03(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\"\xa8\x02\n\x10P4StructTypeSpec\x12\x36\n\x07members\x18\x01 \x03(\x0b\x32%.p4.config.v1.P4StructTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1aG\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\"\xb1\x02\n\x10P4HeaderTypeSpec\x12\x36\n\x07members\x18\x01 \x03(\x0b\x32%.p4.config.v1.P4HeaderTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1aP\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\ttype_spec\x18\x02 \x01(\x0b\x32%.p4.config.v1.P4BitstringLikeTypeSpec\"\xac\x02\n\x15P4HeaderUnionTypeSpec\x12;\n\x07members\x18\x01 \x03(\x0b\x32*.p4.config.v1.P4HeaderUnionTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\x41\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x06header\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"P\n\x15P4HeaderStackTypeSpec\x12)\n\x06header\x18\x01 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x0c\n\x04size\x18\x02 \x01(\x05\"[\n\x1aP4HeaderUnionStackTypeSpec\x12/\n\x0cheader_union\x18\x01 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x0c\n\x04size\x18\x02 \x01(\x05\"D\n\x0cKeyValuePair\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.p4.config.v1.Expression\"@\n\x10KeyValuePairList\x12,\n\x08kv_pairs\x18\x01 \x03(\x0b\x32\x1a.p4.config.v1.KeyValuePair\"Z\n\nExpression\x12\x16\n\x0cstring_value\x18\x01 \x01(\tH\x00\x12\x15\n\x0bint64_value\x18\x02 \x01(\x03H\x00\x12\x14\n\nbool_value\x18\x03 \x01(\x08H\x00\x42\x07\n\x05value\"?\n\x0e\x45xpressionList\x12-\n\x0b\x65xpressions\x18\x01 \x03(\x0b\x32\x18.p4.config.v1.Expression\"\xd4\x01\n\x14StructuredAnnotation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x37\n\x0f\x65xpression_list\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.ExpressionListH\x00\x12\x36\n\x0ckv_pair_list\x18\x03 \x01(\x0b\x32\x1e.p4.config.v1.KeyValuePairListH\x00\x12\x35\n\x0fsource_location\x18\x04 \x01(\x0b\x32\x1c.p4.config.v1.SourceLocationB\x06\n\x04\x62ody\"<\n\x0eSourceLocation\x12\x0c\n\x04\x66ile\x18\x01 \x01(\t\x12\x0c\n\x04line\x18\x02 \x01(\x05\x12\x0e\n\x06\x63olumn\x18\x03 \x01(\x05\"\x89\x03\n\x0eP4EnumTypeSpec\x12\x34\n\x07members\x18\x01 \x03(\x0b\x32#.p4.config.v1.P4EnumTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x04 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x03 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\xab\x01\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x04 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x03 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\xe6\x03\n\x1aP4SerializableEnumTypeSpec\x12\x34\n\x0funderlying_type\x18\x01 \x01(\x0b\x32\x1b.p4.config.v1.P4BitTypeSpec\x12@\n\x07members\x18\x02 \x03(\x0b\x32/.p4.config.v1.P4SerializableEnumTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\xba\x01\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\"\n\x0fP4ErrorTypeSpec\x12\x0f\n\x07members\x18\x01 \x03(\t\"\x98\x01\n\x14P4NewTypeTranslation\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x16\n\x0csdn_bitwidth\x18\x02 \x01(\x05H\x00\x12\x42\n\nsdn_string\x18\x03 \x01(\x0b\x32,.p4.config.v1.P4NewTypeTranslation.SdnStringH\x00\x1a\x0b\n\tSdnStringB\n\n\x08sdn_type\"\xac\x02\n\rP4NewTypeSpec\x12\x35\n\roriginal_type\x18\x01 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpecH\x00\x12=\n\x0ftranslated_type\x18\x02 \x01(\x0b\x32\".p4.config.v1.P4NewTypeTranslationH\x00\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotationB\x10\n\x0erepresentation\"\xb0\x07\n\x0fGenericTypeInfo\x12;\n\x07structs\x18\x01 \x03(\x0b\x32*.p4.config.v1.GenericTypeInfo.StructsEntry\x12\x37\n\x05lists\x18\x02 \x03(\x0b\x32(.p4.config.v1.GenericTypeInfo.ListsEntry\x12H\n\x0eunordered_sets\x18\x03 \x03(\x0b\x32\x30.p4.config.v1.GenericTypeInfo.UnorderedSetsEntry\x12\x37\n\x05\x65nums\x18\x04 \x03(\x0b\x32(.p4.config.v1.GenericTypeInfo.EnumsEntry\x12P\n\x12serializable_enums\x18\x05 \x03(\x0b\x32\x34.p4.config.v1.GenericTypeInfo.SerializableEnumsEntry\x12>\n\tnew_types\x18\x06 \x03(\x0b\x32+.p4.config.v1.GenericTypeInfo.NewTypesEntry\x1aS\n\x0cStructsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.p4.config.v1.GenericStructTypeSpec:\x02\x38\x01\x1aO\n\nListsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32!.p4.config.v1.GenericListTypeSpec:\x02\x38\x01\x1a_\n\x12UnorderedSetsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x38\n\x05value\x18\x02 \x01(\x0b\x32).p4.config.v1.GenericUnorderedSetTypeSpec:\x02\x38\x01\x1aO\n\nEnumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32!.p4.config.v1.GenericEnumTypeSpec:\x02\x38\x01\x1ag\n\x16SerializableEnumsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12<\n\x05value\x18\x02 \x01(\x0b\x32-.p4.config.v1.GenericSerializableEnumTypeSpec:\x02\x38\x01\x1aQ\n\rNewTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .p4.config.v1.GenericNewTypeSpec:\x02\x38\x01\"\x80\x04\n\x13GenericDataTypeSpec\x12?\n\tbitstring\x18\x01 \x01(\x0b\x32*.p4.config.v1.GenericBitstringLikeTypeSpecH\x00\x12-\n\x04\x62ool\x18\x02 \x01(\x0b\x32\x1d.p4.config.v1.GenericBoolTypeH\x00\x12\x30\n\x06struct\x18\x03 \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x12.\n\x04list\x18\x04 \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x12\x37\n\runordered_set\x18\x05 \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x12\x30\n\x06string\x18\x06 \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x12.\n\x04\x65num\x18\x07 \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x12;\n\x11serializable_enum\x18\x08 \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x12\x32\n\x08new_type\x18\t \x01(\x0b\x32\x1e.p4.config.v1.GenericNamedTypeH\x00\x42\x0b\n\ttype_spec\" \n\x10GenericNamedType\x12\x0c\n\x04name\x18\x01 \x01(\t\"(\n\x0fGenericBoolType\x12\x15\n\rdefault_value\x18\x01 \x01(\x05\"\xd9\x02\n\x1cGenericBitstringLikeTypeSpec\x12/\n\x03\x62it\x18\x01 \x01(\x0b\x32 .p4.config.v1.GenericBitTypeSpecH\x00\x12/\n\x03int\x18\x02 \x01(\x0b\x32 .p4.config.v1.GenericIntTypeSpecH\x00\x12\x35\n\x06varbit\x18\x03 \x01(\x0b\x32#.p4.config.v1.GenericVarbitTypeSpecH\x00\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotationB\x0b\n\ttype_spec\"=\n\x12GenericBitTypeSpec\x12\x10\n\x08\x62itwidth\x18\x01 \x01(\x05\x12\x15\n\rdefault_value\x18\x02 \x01(\x0c\"=\n\x12GenericIntTypeSpec\x12\x10\n\x08\x62itwidth\x18\x01 \x01(\x05\x12\x15\n\rdefault_value\x18\x02 \x01(\x0c\"D\n\x15GenericVarbitTypeSpec\x12\x14\n\x0cmax_bitwidth\x18\x01 \x01(\x05\x12\x15\n\rdefault_value\x18\x02 \x01(\x0c\"\xc3\x02\n\x15GenericStructTypeSpec\x12;\n\x07members\x18\x01 \x03(\x0b\x32*.p4.config.v1.GenericStructTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1aX\n\x06Member\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x34\n\ttype_spec\x18\x03 \x01(\x0b\x32!.p4.config.v1.GenericDataTypeSpec\"\x8c\x02\n\x13GenericListTypeSpec\x12<\n\x11\x65lement_type_spec\x18\x01 \x01(\x0b\x32!.p4.config.v1.GenericDataTypeSpec\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12\x10\n\x08min_size\x18\x04 \x01(\x05\x12\x10\n\x08max_size\x18\x05 \x01(\x05\x12:\n\x14\x61nnotation_locations\x18\x06 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x94\x02\n\x1bGenericUnorderedSetTypeSpec\x12<\n\x11\x65lement_type_spec\x18\x01 \x01(\x0b\x32!.p4.config.v1.GenericDataTypeSpec\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12\x10\n\x08min_size\x18\x04 \x01(\x05\x12\x10\n\x08max_size\x18\x05 \x01(\x05\x12:\n\x14\x61nnotation_locations\x18\x06 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\xf1\x01\n\x11GenericStringSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rdefault_value\x18\x02 \x01(\t\x12\x10\n\x08min_size\x18\x03 \x01(\x05\x12\x10\n\x08max_size\x18\x04 \x01(\x05\x12\x13\n\x0b\x61nnotations\x18\x05 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x06 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\xaa\x03\n\x13GenericEnumTypeSpec\x12\x39\n\x07members\x18\x01 \x03(\x0b\x32(.p4.config.v1.GenericEnumTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\xc2\x01\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rdefault_value\x18\x02 \x01(\x05\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x04 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x05 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x8c\x04\n\x1fGenericSerializableEnumTypeSpec\x12\x39\n\x0funderlying_type\x18\x01 \x01(\x0b\x32 .p4.config.v1.GenericBitTypeSpec\x12\x45\n\x07members\x18\x02 \x03(\x0b\x32\x34.p4.config.v1.GenericSerializableEnumTypeSpec.Member\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x04 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x05 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x1a\xd1\x01\n\x06Member\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x12\x15\n\rdefault_value\x18\x03 \x01(\x05\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\xa2\x01\n\x19GenericNewTypeTranslation\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x16\n\x0csdn_bitwidth\x18\x02 \x01(\x05H\x00\x12G\n\nsdn_string\x18\x03 \x01(\x0b\x32\x31.p4.config.v1.GenericNewTypeTranslation.SdnStringH\x00\x1a\x0b\n\tSdnStringB\n\n\x08sdn_type\"\xbb\x02\n\x12GenericNewTypeSpec\x12:\n\roriginal_type\x18\x01 \x01(\x0b\x32!.p4.config.v1.GenericDataTypeSpecH\x00\x12\x42\n\x0ftranslated_type\x18\x02 \x01(\x0b\x32\'.p4.config.v1.GenericNewTypeTranslationH\x00\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotationB\x10\n\x0erepresentationB-Z+github.com/p4lang/p4runtime/go/p4/config/v1b\x06proto3' ) @@ -1727,6 +1727,1331 @@ serialized_end=5218, ) + +_GENERICTYPEINFO_STRUCTSENTRY = _descriptor.Descriptor( + name='StructsEntry', + full_name='p4.config.v1.GenericTypeInfo.StructsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='p4.config.v1.GenericTypeInfo.StructsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericTypeInfo.StructsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5635, + serialized_end=5718, +) + +_GENERICTYPEINFO_LISTSENTRY = _descriptor.Descriptor( + name='ListsEntry', + full_name='p4.config.v1.GenericTypeInfo.ListsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='p4.config.v1.GenericTypeInfo.ListsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericTypeInfo.ListsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5720, + serialized_end=5799, +) + +_GENERICTYPEINFO_UNORDEREDSETSENTRY = _descriptor.Descriptor( + name='UnorderedSetsEntry', + full_name='p4.config.v1.GenericTypeInfo.UnorderedSetsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='p4.config.v1.GenericTypeInfo.UnorderedSetsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericTypeInfo.UnorderedSetsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5801, + serialized_end=5896, +) + +_GENERICTYPEINFO_ENUMSENTRY = _descriptor.Descriptor( + name='EnumsEntry', + full_name='p4.config.v1.GenericTypeInfo.EnumsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='p4.config.v1.GenericTypeInfo.EnumsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericTypeInfo.EnumsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5898, + serialized_end=5977, +) + +_GENERICTYPEINFO_SERIALIZABLEENUMSENTRY = _descriptor.Descriptor( + name='SerializableEnumsEntry', + full_name='p4.config.v1.GenericTypeInfo.SerializableEnumsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='p4.config.v1.GenericTypeInfo.SerializableEnumsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericTypeInfo.SerializableEnumsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5979, + serialized_end=6082, +) + +_GENERICTYPEINFO_NEWTYPESENTRY = _descriptor.Descriptor( + name='NewTypesEntry', + full_name='p4.config.v1.GenericTypeInfo.NewTypesEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='p4.config.v1.GenericTypeInfo.NewTypesEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericTypeInfo.NewTypesEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6084, + serialized_end=6165, +) + +_GENERICTYPEINFO = _descriptor.Descriptor( + name='GenericTypeInfo', + full_name='p4.config.v1.GenericTypeInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='structs', full_name='p4.config.v1.GenericTypeInfo.structs', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='lists', full_name='p4.config.v1.GenericTypeInfo.lists', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unordered_sets', full_name='p4.config.v1.GenericTypeInfo.unordered_sets', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='enums', full_name='p4.config.v1.GenericTypeInfo.enums', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serializable_enums', full_name='p4.config.v1.GenericTypeInfo.serializable_enums', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='new_types', full_name='p4.config.v1.GenericTypeInfo.new_types', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_GENERICTYPEINFO_STRUCTSENTRY, _GENERICTYPEINFO_LISTSENTRY, _GENERICTYPEINFO_UNORDEREDSETSENTRY, _GENERICTYPEINFO_ENUMSENTRY, _GENERICTYPEINFO_SERIALIZABLEENUMSENTRY, _GENERICTYPEINFO_NEWTYPESENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5221, + serialized_end=6165, +) + + +_GENERICDATATYPESPEC = _descriptor.Descriptor( + name='GenericDataTypeSpec', + full_name='p4.config.v1.GenericDataTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='bitstring', full_name='p4.config.v1.GenericDataTypeSpec.bitstring', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='bool', full_name='p4.config.v1.GenericDataTypeSpec.bool', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='struct', full_name='p4.config.v1.GenericDataTypeSpec.struct', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='list', full_name='p4.config.v1.GenericDataTypeSpec.list', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unordered_set', full_name='p4.config.v1.GenericDataTypeSpec.unordered_set', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='string', full_name='p4.config.v1.GenericDataTypeSpec.string', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='enum', full_name='p4.config.v1.GenericDataTypeSpec.enum', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serializable_enum', full_name='p4.config.v1.GenericDataTypeSpec.serializable_enum', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='new_type', full_name='p4.config.v1.GenericDataTypeSpec.new_type', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='type_spec', full_name='p4.config.v1.GenericDataTypeSpec.type_spec', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=6168, + serialized_end=6680, +) + + +_GENERICNAMEDTYPE = _descriptor.Descriptor( + name='GenericNamedType', + full_name='p4.config.v1.GenericNamedType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.GenericNamedType.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6682, + serialized_end=6714, +) + + +_GENERICBOOLTYPE = _descriptor.Descriptor( + name='GenericBoolType', + full_name='p4.config.v1.GenericBoolType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericBoolType.default_value', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6716, + serialized_end=6756, +) + + +_GENERICBITSTRINGLIKETYPESPEC = _descriptor.Descriptor( + name='GenericBitstringLikeTypeSpec', + full_name='p4.config.v1.GenericBitstringLikeTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='bit', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.bit', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='int', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.int', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='varbit', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.varbit', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.annotations', index=3, + number=4, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.annotation_locations', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.structured_annotations', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='type_spec', full_name='p4.config.v1.GenericBitstringLikeTypeSpec.type_spec', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=6759, + serialized_end=7104, +) + + +_GENERICBITTYPESPEC = _descriptor.Descriptor( + name='GenericBitTypeSpec', + full_name='p4.config.v1.GenericBitTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='bitwidth', full_name='p4.config.v1.GenericBitTypeSpec.bitwidth', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericBitTypeSpec.default_value', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7106, + serialized_end=7167, +) + + +_GENERICINTTYPESPEC = _descriptor.Descriptor( + name='GenericIntTypeSpec', + full_name='p4.config.v1.GenericIntTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='bitwidth', full_name='p4.config.v1.GenericIntTypeSpec.bitwidth', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericIntTypeSpec.default_value', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7169, + serialized_end=7230, +) + + +_GENERICVARBITTYPESPEC = _descriptor.Descriptor( + name='GenericVarbitTypeSpec', + full_name='p4.config.v1.GenericVarbitTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='max_bitwidth', full_name='p4.config.v1.GenericVarbitTypeSpec.max_bitwidth', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericVarbitTypeSpec.default_value', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7232, + serialized_end=7300, +) + + +_GENERICSTRUCTTYPESPEC_MEMBER = _descriptor.Descriptor( + name='Member', + full_name='p4.config.v1.GenericStructTypeSpec.Member', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='p4.config.v1.GenericStructTypeSpec.Member.id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.GenericStructTypeSpec.Member.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='type_spec', full_name='p4.config.v1.GenericStructTypeSpec.Member.type_spec', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7538, + serialized_end=7626, +) + +_GENERICSTRUCTTYPESPEC = _descriptor.Descriptor( + name='GenericStructTypeSpec', + full_name='p4.config.v1.GenericStructTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='members', full_name='p4.config.v1.GenericStructTypeSpec.members', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericStructTypeSpec.annotations', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericStructTypeSpec.annotation_locations', index=2, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericStructTypeSpec.structured_annotations', index=3, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_GENERICSTRUCTTYPESPEC_MEMBER, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7303, + serialized_end=7626, +) + + +_GENERICLISTTYPESPEC = _descriptor.Descriptor( + name='GenericListTypeSpec', + full_name='p4.config.v1.GenericListTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='element_type_spec', full_name='p4.config.v1.GenericListTypeSpec.element_type_spec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericListTypeSpec.annotations', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_size', full_name='p4.config.v1.GenericListTypeSpec.min_size', index=2, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_size', full_name='p4.config.v1.GenericListTypeSpec.max_size', index=3, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericListTypeSpec.annotation_locations', index=4, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericListTypeSpec.structured_annotations', index=5, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7629, + serialized_end=7897, +) + + +_GENERICUNORDEREDSETTYPESPEC = _descriptor.Descriptor( + name='GenericUnorderedSetTypeSpec', + full_name='p4.config.v1.GenericUnorderedSetTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='element_type_spec', full_name='p4.config.v1.GenericUnorderedSetTypeSpec.element_type_spec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericUnorderedSetTypeSpec.annotations', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_size', full_name='p4.config.v1.GenericUnorderedSetTypeSpec.min_size', index=2, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_size', full_name='p4.config.v1.GenericUnorderedSetTypeSpec.max_size', index=3, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericUnorderedSetTypeSpec.annotation_locations', index=4, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericUnorderedSetTypeSpec.structured_annotations', index=5, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7900, + serialized_end=8176, +) + + +_GENERICSTRINGSPEC = _descriptor.Descriptor( + name='GenericStringSpec', + full_name='p4.config.v1.GenericStringSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.GenericStringSpec.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericStringSpec.default_value', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_size', full_name='p4.config.v1.GenericStringSpec.min_size', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_size', full_name='p4.config.v1.GenericStringSpec.max_size', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericStringSpec.annotations', index=4, + number=5, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericStringSpec.annotation_locations', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericStringSpec.structured_annotations', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8179, + serialized_end=8420, +) + + +_GENERICENUMTYPESPEC_MEMBER = _descriptor.Descriptor( + name='Member', + full_name='p4.config.v1.GenericEnumTypeSpec.Member', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.GenericEnumTypeSpec.Member.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericEnumTypeSpec.Member.default_value', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericEnumTypeSpec.Member.annotations', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericEnumTypeSpec.Member.annotation_locations', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericEnumTypeSpec.Member.structured_annotations', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8655, + serialized_end=8849, +) + +_GENERICENUMTYPESPEC = _descriptor.Descriptor( + name='GenericEnumTypeSpec', + full_name='p4.config.v1.GenericEnumTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='members', full_name='p4.config.v1.GenericEnumTypeSpec.members', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericEnumTypeSpec.annotations', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericEnumTypeSpec.annotation_locations', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericEnumTypeSpec.structured_annotations', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_GENERICENUMTYPESPEC_MEMBER, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8423, + serialized_end=8849, +) + + +_GENERICSERIALIZABLEENUMTYPESPEC_MEMBER = _descriptor.Descriptor( + name='Member', + full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member.value', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_value', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member.default_value', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member.annotations', index=3, + number=4, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member.annotation_locations', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.Member.structured_annotations', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=9167, + serialized_end=9376, +) + +_GENERICSERIALIZABLEENUMTYPESPEC = _descriptor.Descriptor( + name='GenericSerializableEnumTypeSpec', + full_name='p4.config.v1.GenericSerializableEnumTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='underlying_type', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.underlying_type', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='members', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.members', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.annotations', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.annotation_locations', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericSerializableEnumTypeSpec.structured_annotations', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_GENERICSERIALIZABLEENUMTYPESPEC_MEMBER, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8852, + serialized_end=9376, +) + + +_GENERICNEWTYPETRANSLATION_SDNSTRING = _descriptor.Descriptor( + name='SdnString', + full_name='p4.config.v1.GenericNewTypeTranslation.SdnString', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4892, + serialized_end=4903, +) + +_GENERICNEWTYPETRANSLATION = _descriptor.Descriptor( + name='GenericNewTypeTranslation', + full_name='p4.config.v1.GenericNewTypeTranslation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='uri', full_name='p4.config.v1.GenericNewTypeTranslation.uri', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sdn_bitwidth', full_name='p4.config.v1.GenericNewTypeTranslation.sdn_bitwidth', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sdn_string', full_name='p4.config.v1.GenericNewTypeTranslation.sdn_string', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_GENERICNEWTYPETRANSLATION_SDNSTRING, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='sdn_type', full_name='p4.config.v1.GenericNewTypeTranslation.sdn_type', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=9379, + serialized_end=9541, +) + + +_GENERICNEWTYPESPEC = _descriptor.Descriptor( + name='GenericNewTypeSpec', + full_name='p4.config.v1.GenericNewTypeSpec', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='original_type', full_name='p4.config.v1.GenericNewTypeSpec.original_type', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='translated_type', full_name='p4.config.v1.GenericNewTypeSpec.translated_type', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotations', full_name='p4.config.v1.GenericNewTypeSpec.annotations', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='annotation_locations', full_name='p4.config.v1.GenericNewTypeSpec.annotation_locations', index=3, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='structured_annotations', full_name='p4.config.v1.GenericNewTypeSpec.structured_annotations', index=4, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='representation', full_name='p4.config.v1.GenericNewTypeSpec.representation', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=9544, + serialized_end=9859, +) + _P4TYPEINFO_STRUCTSENTRY.fields_by_name['value'].message_type = _P4STRUCTTYPESPEC _P4TYPEINFO_STRUCTSENTRY.containing_type = _P4TYPEINFO _P4TYPEINFO_HEADERSENTRY.fields_by_name['value'].message_type = _P4HEADERTYPESPEC @@ -1878,6 +3203,118 @@ _P4NEWTYPESPEC.oneofs_by_name['representation'].fields.append( _P4NEWTYPESPEC.fields_by_name['translated_type']) _P4NEWTYPESPEC.fields_by_name['translated_type'].containing_oneof = _P4NEWTYPESPEC.oneofs_by_name['representation'] +_GENERICTYPEINFO_STRUCTSENTRY.fields_by_name['value'].message_type = _GENERICSTRUCTTYPESPEC +_GENERICTYPEINFO_STRUCTSENTRY.containing_type = _GENERICTYPEINFO +_GENERICTYPEINFO_LISTSENTRY.fields_by_name['value'].message_type = _GENERICLISTTYPESPEC +_GENERICTYPEINFO_LISTSENTRY.containing_type = _GENERICTYPEINFO +_GENERICTYPEINFO_UNORDEREDSETSENTRY.fields_by_name['value'].message_type = _GENERICUNORDEREDSETTYPESPEC +_GENERICTYPEINFO_UNORDEREDSETSENTRY.containing_type = _GENERICTYPEINFO +_GENERICTYPEINFO_ENUMSENTRY.fields_by_name['value'].message_type = _GENERICENUMTYPESPEC +_GENERICTYPEINFO_ENUMSENTRY.containing_type = _GENERICTYPEINFO +_GENERICTYPEINFO_SERIALIZABLEENUMSENTRY.fields_by_name['value'].message_type = _GENERICSERIALIZABLEENUMTYPESPEC +_GENERICTYPEINFO_SERIALIZABLEENUMSENTRY.containing_type = _GENERICTYPEINFO +_GENERICTYPEINFO_NEWTYPESENTRY.fields_by_name['value'].message_type = _GENERICNEWTYPESPEC +_GENERICTYPEINFO_NEWTYPESENTRY.containing_type = _GENERICTYPEINFO +_GENERICTYPEINFO.fields_by_name['structs'].message_type = _GENERICTYPEINFO_STRUCTSENTRY +_GENERICTYPEINFO.fields_by_name['lists'].message_type = _GENERICTYPEINFO_LISTSENTRY +_GENERICTYPEINFO.fields_by_name['unordered_sets'].message_type = _GENERICTYPEINFO_UNORDEREDSETSENTRY +_GENERICTYPEINFO.fields_by_name['enums'].message_type = _GENERICTYPEINFO_ENUMSENTRY +_GENERICTYPEINFO.fields_by_name['serializable_enums'].message_type = _GENERICTYPEINFO_SERIALIZABLEENUMSENTRY +_GENERICTYPEINFO.fields_by_name['new_types'].message_type = _GENERICTYPEINFO_NEWTYPESENTRY +_GENERICDATATYPESPEC.fields_by_name['bitstring'].message_type = _GENERICBITSTRINGLIKETYPESPEC +_GENERICDATATYPESPEC.fields_by_name['bool'].message_type = _GENERICBOOLTYPE +_GENERICDATATYPESPEC.fields_by_name['struct'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.fields_by_name['list'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.fields_by_name['unordered_set'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.fields_by_name['string'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.fields_by_name['enum'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.fields_by_name['serializable_enum'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.fields_by_name['new_type'].message_type = _GENERICNAMEDTYPE +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['bitstring']) +_GENERICDATATYPESPEC.fields_by_name['bitstring'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['bool']) +_GENERICDATATYPESPEC.fields_by_name['bool'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['struct']) +_GENERICDATATYPESPEC.fields_by_name['struct'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['list']) +_GENERICDATATYPESPEC.fields_by_name['list'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['unordered_set']) +_GENERICDATATYPESPEC.fields_by_name['unordered_set'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['string']) +_GENERICDATATYPESPEC.fields_by_name['string'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['enum']) +_GENERICDATATYPESPEC.fields_by_name['enum'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['serializable_enum']) +_GENERICDATATYPESPEC.fields_by_name['serializable_enum'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICDATATYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICDATATYPESPEC.fields_by_name['new_type']) +_GENERICDATATYPESPEC.fields_by_name['new_type'].containing_oneof = _GENERICDATATYPESPEC.oneofs_by_name['type_spec'] +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['bit'].message_type = _GENERICBITTYPESPEC +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['int'].message_type = _GENERICINTTYPESPEC +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['varbit'].message_type = _GENERICVARBITTYPESPEC +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICBITSTRINGLIKETYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICBITSTRINGLIKETYPESPEC.fields_by_name['bit']) +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['bit'].containing_oneof = _GENERICBITSTRINGLIKETYPESPEC.oneofs_by_name['type_spec'] +_GENERICBITSTRINGLIKETYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICBITSTRINGLIKETYPESPEC.fields_by_name['int']) +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['int'].containing_oneof = _GENERICBITSTRINGLIKETYPESPEC.oneofs_by_name['type_spec'] +_GENERICBITSTRINGLIKETYPESPEC.oneofs_by_name['type_spec'].fields.append( + _GENERICBITSTRINGLIKETYPESPEC.fields_by_name['varbit']) +_GENERICBITSTRINGLIKETYPESPEC.fields_by_name['varbit'].containing_oneof = _GENERICBITSTRINGLIKETYPESPEC.oneofs_by_name['type_spec'] +_GENERICSTRUCTTYPESPEC_MEMBER.fields_by_name['type_spec'].message_type = _GENERICDATATYPESPEC +_GENERICSTRUCTTYPESPEC_MEMBER.containing_type = _GENERICSTRUCTTYPESPEC +_GENERICSTRUCTTYPESPEC.fields_by_name['members'].message_type = _GENERICSTRUCTTYPESPEC_MEMBER +_GENERICSTRUCTTYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICSTRUCTTYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICLISTTYPESPEC.fields_by_name['element_type_spec'].message_type = _GENERICDATATYPESPEC +_GENERICLISTTYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICLISTTYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICUNORDEREDSETTYPESPEC.fields_by_name['element_type_spec'].message_type = _GENERICDATATYPESPEC +_GENERICUNORDEREDSETTYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICUNORDEREDSETTYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICSTRINGSPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICSTRINGSPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICENUMTYPESPEC_MEMBER.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICENUMTYPESPEC_MEMBER.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICENUMTYPESPEC_MEMBER.containing_type = _GENERICENUMTYPESPEC +_GENERICENUMTYPESPEC.fields_by_name['members'].message_type = _GENERICENUMTYPESPEC_MEMBER +_GENERICENUMTYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICENUMTYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICSERIALIZABLEENUMTYPESPEC_MEMBER.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICSERIALIZABLEENUMTYPESPEC_MEMBER.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICSERIALIZABLEENUMTYPESPEC_MEMBER.containing_type = _GENERICSERIALIZABLEENUMTYPESPEC +_GENERICSERIALIZABLEENUMTYPESPEC.fields_by_name['underlying_type'].message_type = _GENERICBITTYPESPEC +_GENERICSERIALIZABLEENUMTYPESPEC.fields_by_name['members'].message_type = _GENERICSERIALIZABLEENUMTYPESPEC_MEMBER +_GENERICSERIALIZABLEENUMTYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICSERIALIZABLEENUMTYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICNEWTYPETRANSLATION_SDNSTRING.containing_type = _GENERICNEWTYPETRANSLATION +_GENERICNEWTYPETRANSLATION.fields_by_name['sdn_string'].message_type = _GENERICNEWTYPETRANSLATION_SDNSTRING +_GENERICNEWTYPETRANSLATION.oneofs_by_name['sdn_type'].fields.append( + _GENERICNEWTYPETRANSLATION.fields_by_name['sdn_bitwidth']) +_GENERICNEWTYPETRANSLATION.fields_by_name['sdn_bitwidth'].containing_oneof = _GENERICNEWTYPETRANSLATION.oneofs_by_name['sdn_type'] +_GENERICNEWTYPETRANSLATION.oneofs_by_name['sdn_type'].fields.append( + _GENERICNEWTYPETRANSLATION.fields_by_name['sdn_string']) +_GENERICNEWTYPETRANSLATION.fields_by_name['sdn_string'].containing_oneof = _GENERICNEWTYPETRANSLATION.oneofs_by_name['sdn_type'] +_GENERICNEWTYPESPEC.fields_by_name['original_type'].message_type = _GENERICDATATYPESPEC +_GENERICNEWTYPESPEC.fields_by_name['translated_type'].message_type = _GENERICNEWTYPETRANSLATION +_GENERICNEWTYPESPEC.fields_by_name['annotation_locations'].message_type = _SOURCELOCATION +_GENERICNEWTYPESPEC.fields_by_name['structured_annotations'].message_type = _STRUCTUREDANNOTATION +_GENERICNEWTYPESPEC.oneofs_by_name['representation'].fields.append( + _GENERICNEWTYPESPEC.fields_by_name['original_type']) +_GENERICNEWTYPESPEC.fields_by_name['original_type'].containing_oneof = _GENERICNEWTYPESPEC.oneofs_by_name['representation'] +_GENERICNEWTYPESPEC.oneofs_by_name['representation'].fields.append( + _GENERICNEWTYPESPEC.fields_by_name['translated_type']) +_GENERICNEWTYPESPEC.fields_by_name['translated_type'].containing_oneof = _GENERICNEWTYPESPEC.oneofs_by_name['representation'] DESCRIPTOR.message_types_by_name['P4TypeInfo'] = _P4TYPEINFO DESCRIPTOR.message_types_by_name['P4DataTypeSpec'] = _P4DATATYPESPEC DESCRIPTOR.message_types_by_name['P4NamedType'] = _P4NAMEDTYPE @@ -1904,6 +3341,22 @@ DESCRIPTOR.message_types_by_name['P4ErrorTypeSpec'] = _P4ERRORTYPESPEC DESCRIPTOR.message_types_by_name['P4NewTypeTranslation'] = _P4NEWTYPETRANSLATION DESCRIPTOR.message_types_by_name['P4NewTypeSpec'] = _P4NEWTYPESPEC +DESCRIPTOR.message_types_by_name['GenericTypeInfo'] = _GENERICTYPEINFO +DESCRIPTOR.message_types_by_name['GenericDataTypeSpec'] = _GENERICDATATYPESPEC +DESCRIPTOR.message_types_by_name['GenericNamedType'] = _GENERICNAMEDTYPE +DESCRIPTOR.message_types_by_name['GenericBoolType'] = _GENERICBOOLTYPE +DESCRIPTOR.message_types_by_name['GenericBitstringLikeTypeSpec'] = _GENERICBITSTRINGLIKETYPESPEC +DESCRIPTOR.message_types_by_name['GenericBitTypeSpec'] = _GENERICBITTYPESPEC +DESCRIPTOR.message_types_by_name['GenericIntTypeSpec'] = _GENERICINTTYPESPEC +DESCRIPTOR.message_types_by_name['GenericVarbitTypeSpec'] = _GENERICVARBITTYPESPEC +DESCRIPTOR.message_types_by_name['GenericStructTypeSpec'] = _GENERICSTRUCTTYPESPEC +DESCRIPTOR.message_types_by_name['GenericListTypeSpec'] = _GENERICLISTTYPESPEC +DESCRIPTOR.message_types_by_name['GenericUnorderedSetTypeSpec'] = _GENERICUNORDEREDSETTYPESPEC +DESCRIPTOR.message_types_by_name['GenericStringSpec'] = _GENERICSTRINGSPEC +DESCRIPTOR.message_types_by_name['GenericEnumTypeSpec'] = _GENERICENUMTYPESPEC +DESCRIPTOR.message_types_by_name['GenericSerializableEnumTypeSpec'] = _GENERICSERIALIZABLEENUMTYPESPEC +DESCRIPTOR.message_types_by_name['GenericNewTypeTranslation'] = _GENERICNEWTYPETRANSLATION +DESCRIPTOR.message_types_by_name['GenericNewTypeSpec'] = _GENERICNEWTYPESPEC _sym_db.RegisterFileDescriptor(DESCRIPTOR) P4TypeInfo = _reflection.GeneratedProtocolMessageType('P4TypeInfo', (_message.Message,), { @@ -2184,6 +3637,198 @@ }) _sym_db.RegisterMessage(P4NewTypeSpec) +GenericTypeInfo = _reflection.GeneratedProtocolMessageType('GenericTypeInfo', (_message.Message,), { + + 'StructsEntry' : _reflection.GeneratedProtocolMessageType('StructsEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTYPEINFO_STRUCTSENTRY, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo.StructsEntry) + }) + , + + 'ListsEntry' : _reflection.GeneratedProtocolMessageType('ListsEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTYPEINFO_LISTSENTRY, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo.ListsEntry) + }) + , + + 'UnorderedSetsEntry' : _reflection.GeneratedProtocolMessageType('UnorderedSetsEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTYPEINFO_UNORDEREDSETSENTRY, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo.UnorderedSetsEntry) + }) + , + + 'EnumsEntry' : _reflection.GeneratedProtocolMessageType('EnumsEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTYPEINFO_ENUMSENTRY, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo.EnumsEntry) + }) + , + + 'SerializableEnumsEntry' : _reflection.GeneratedProtocolMessageType('SerializableEnumsEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTYPEINFO_SERIALIZABLEENUMSENTRY, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo.SerializableEnumsEntry) + }) + , + + 'NewTypesEntry' : _reflection.GeneratedProtocolMessageType('NewTypesEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTYPEINFO_NEWTYPESENTRY, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo.NewTypesEntry) + }) + , + 'DESCRIPTOR' : _GENERICTYPEINFO, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericTypeInfo) + }) +_sym_db.RegisterMessage(GenericTypeInfo) +_sym_db.RegisterMessage(GenericTypeInfo.StructsEntry) +_sym_db.RegisterMessage(GenericTypeInfo.ListsEntry) +_sym_db.RegisterMessage(GenericTypeInfo.UnorderedSetsEntry) +_sym_db.RegisterMessage(GenericTypeInfo.EnumsEntry) +_sym_db.RegisterMessage(GenericTypeInfo.SerializableEnumsEntry) +_sym_db.RegisterMessage(GenericTypeInfo.NewTypesEntry) + +GenericDataTypeSpec = _reflection.GeneratedProtocolMessageType('GenericDataTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICDATATYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericDataTypeSpec) + }) +_sym_db.RegisterMessage(GenericDataTypeSpec) + +GenericNamedType = _reflection.GeneratedProtocolMessageType('GenericNamedType', (_message.Message,), { + 'DESCRIPTOR' : _GENERICNAMEDTYPE, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericNamedType) + }) +_sym_db.RegisterMessage(GenericNamedType) + +GenericBoolType = _reflection.GeneratedProtocolMessageType('GenericBoolType', (_message.Message,), { + 'DESCRIPTOR' : _GENERICBOOLTYPE, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericBoolType) + }) +_sym_db.RegisterMessage(GenericBoolType) + +GenericBitstringLikeTypeSpec = _reflection.GeneratedProtocolMessageType('GenericBitstringLikeTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICBITSTRINGLIKETYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericBitstringLikeTypeSpec) + }) +_sym_db.RegisterMessage(GenericBitstringLikeTypeSpec) + +GenericBitTypeSpec = _reflection.GeneratedProtocolMessageType('GenericBitTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICBITTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericBitTypeSpec) + }) +_sym_db.RegisterMessage(GenericBitTypeSpec) + +GenericIntTypeSpec = _reflection.GeneratedProtocolMessageType('GenericIntTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICINTTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericIntTypeSpec) + }) +_sym_db.RegisterMessage(GenericIntTypeSpec) + +GenericVarbitTypeSpec = _reflection.GeneratedProtocolMessageType('GenericVarbitTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICVARBITTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericVarbitTypeSpec) + }) +_sym_db.RegisterMessage(GenericVarbitTypeSpec) + +GenericStructTypeSpec = _reflection.GeneratedProtocolMessageType('GenericStructTypeSpec', (_message.Message,), { + + 'Member' : _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), { + 'DESCRIPTOR' : _GENERICSTRUCTTYPESPEC_MEMBER, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericStructTypeSpec.Member) + }) + , + 'DESCRIPTOR' : _GENERICSTRUCTTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericStructTypeSpec) + }) +_sym_db.RegisterMessage(GenericStructTypeSpec) +_sym_db.RegisterMessage(GenericStructTypeSpec.Member) + +GenericListTypeSpec = _reflection.GeneratedProtocolMessageType('GenericListTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICLISTTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericListTypeSpec) + }) +_sym_db.RegisterMessage(GenericListTypeSpec) + +GenericUnorderedSetTypeSpec = _reflection.GeneratedProtocolMessageType('GenericUnorderedSetTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICUNORDEREDSETTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericUnorderedSetTypeSpec) + }) +_sym_db.RegisterMessage(GenericUnorderedSetTypeSpec) + +GenericStringSpec = _reflection.GeneratedProtocolMessageType('GenericStringSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICSTRINGSPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericStringSpec) + }) +_sym_db.RegisterMessage(GenericStringSpec) + +GenericEnumTypeSpec = _reflection.GeneratedProtocolMessageType('GenericEnumTypeSpec', (_message.Message,), { + + 'Member' : _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), { + 'DESCRIPTOR' : _GENERICENUMTYPESPEC_MEMBER, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericEnumTypeSpec.Member) + }) + , + 'DESCRIPTOR' : _GENERICENUMTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericEnumTypeSpec) + }) +_sym_db.RegisterMessage(GenericEnumTypeSpec) +_sym_db.RegisterMessage(GenericEnumTypeSpec.Member) + +GenericSerializableEnumTypeSpec = _reflection.GeneratedProtocolMessageType('GenericSerializableEnumTypeSpec', (_message.Message,), { + + 'Member' : _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), { + 'DESCRIPTOR' : _GENERICSERIALIZABLEENUMTYPESPEC_MEMBER, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericSerializableEnumTypeSpec.Member) + }) + , + 'DESCRIPTOR' : _GENERICSERIALIZABLEENUMTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericSerializableEnumTypeSpec) + }) +_sym_db.RegisterMessage(GenericSerializableEnumTypeSpec) +_sym_db.RegisterMessage(GenericSerializableEnumTypeSpec.Member) + +GenericNewTypeTranslation = _reflection.GeneratedProtocolMessageType('GenericNewTypeTranslation', (_message.Message,), { + + 'SdnString' : _reflection.GeneratedProtocolMessageType('SdnString', (_message.Message,), { + 'DESCRIPTOR' : _GENERICNEWTYPETRANSLATION_SDNSTRING, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericNewTypeTranslation.SdnString) + }) + , + 'DESCRIPTOR' : _GENERICNEWTYPETRANSLATION, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericNewTypeTranslation) + }) +_sym_db.RegisterMessage(GenericNewTypeTranslation) +_sym_db.RegisterMessage(GenericNewTypeTranslation.SdnString) + +GenericNewTypeSpec = _reflection.GeneratedProtocolMessageType('GenericNewTypeSpec', (_message.Message,), { + 'DESCRIPTOR' : _GENERICNEWTYPESPEC, + '__module__' : 'p4.config.v1.p4types_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.GenericNewTypeSpec) + }) +_sym_db.RegisterMessage(GenericNewTypeSpec) + DESCRIPTOR._options = None _P4TYPEINFO_STRUCTSENTRY._options = None @@ -2192,4 +3837,10 @@ _P4TYPEINFO_ENUMSENTRY._options = None _P4TYPEINFO_SERIALIZABLEENUMSENTRY._options = None _P4TYPEINFO_NEWTYPESENTRY._options = None +_GENERICTYPEINFO_STRUCTSENTRY._options = None +_GENERICTYPEINFO_LISTSENTRY._options = None +_GENERICTYPEINFO_UNORDEREDSETSENTRY._options = None +_GENERICTYPEINFO_ENUMSENTRY._options = None +_GENERICTYPEINFO_SERIALIZABLEENUMSENTRY._options = None +_GENERICTYPEINFO_NEWTYPESENTRY._options = None # @@protoc_insertion_point(module_scope) diff --git a/py/p4/v1/p4data_pb2.py b/py/p4/v1/p4data_pb2.py index a7407ec6..4b094baf 100644 --- a/py/p4/v1/p4data_pb2.py +++ b/py/p4/v1/p4data_pb2.py @@ -19,7 +19,7 @@ syntax='proto3', serialized_options=b'Z$github.com/p4lang/p4runtime/go/p4/v1', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x12p4/v1/p4data.proto\x12\x05p4.v1\"\x94\x03\n\x06P4Data\x12\x13\n\tbitstring\x18\x01 \x01(\x0cH\x00\x12!\n\x06varbit\x18\x02 \x01(\x0b\x32\x0f.p4.v1.P4VarbitH\x00\x12\x0e\n\x04\x62ool\x18\x03 \x01(\x08H\x00\x12$\n\x05tuple\x18\x04 \x01(\x0b\x32\x13.p4.v1.P4StructLikeH\x00\x12%\n\x06struct\x18\x05 \x01(\x0b\x32\x13.p4.v1.P4StructLikeH\x00\x12!\n\x06header\x18\x06 \x01(\x0b\x32\x0f.p4.v1.P4HeaderH\x00\x12,\n\x0cheader_union\x18\x07 \x01(\x0b\x32\x14.p4.v1.P4HeaderUnionH\x00\x12,\n\x0cheader_stack\x18\x08 \x01(\x0b\x32\x14.p4.v1.P4HeaderStackH\x00\x12\x37\n\x12header_union_stack\x18\t \x01(\x0b\x32\x19.p4.v1.P4HeaderUnionStackH\x00\x12\x0e\n\x04\x65num\x18\n \x01(\tH\x00\x12\x0f\n\x05\x65rror\x18\x0b \x01(\tH\x00\x12\x14\n\nenum_value\x18\x0c \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"/\n\x08P4Varbit\x12\x11\n\tbitstring\x18\x01 \x01(\x0c\x12\x10\n\x08\x62itwidth\x18\x02 \x01(\x05\".\n\x0cP4StructLike\x12\x1e\n\x07members\x18\x01 \x03(\x0b\x32\r.p4.v1.P4Data\"0\n\x08P4Header\x12\x10\n\x08is_valid\x18\x01 \x01(\x08\x12\x12\n\nbitstrings\x18\x02 \x03(\x0c\"Q\n\rP4HeaderUnion\x12\x19\n\x11valid_header_name\x18\x01 \x01(\t\x12%\n\x0cvalid_header\x18\x02 \x01(\x0b\x32\x0f.p4.v1.P4Header\"1\n\rP4HeaderStack\x12 \n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x0f.p4.v1.P4Header\";\n\x12P4HeaderUnionStack\x12%\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x14.p4.v1.P4HeaderUnionB&Z$github.com/p4lang/p4runtime/go/p4/v1b\x06proto3' + serialized_pb=b'\n\x12p4/v1/p4data.proto\x12\x05p4.v1\"\x94\x03\n\x06P4Data\x12\x13\n\tbitstring\x18\x01 \x01(\x0cH\x00\x12!\n\x06varbit\x18\x02 \x01(\x0b\x32\x0f.p4.v1.P4VarbitH\x00\x12\x0e\n\x04\x62ool\x18\x03 \x01(\x08H\x00\x12$\n\x05tuple\x18\x04 \x01(\x0b\x32\x13.p4.v1.P4StructLikeH\x00\x12%\n\x06struct\x18\x05 \x01(\x0b\x32\x13.p4.v1.P4StructLikeH\x00\x12!\n\x06header\x18\x06 \x01(\x0b\x32\x0f.p4.v1.P4HeaderH\x00\x12,\n\x0cheader_union\x18\x07 \x01(\x0b\x32\x14.p4.v1.P4HeaderUnionH\x00\x12,\n\x0cheader_stack\x18\x08 \x01(\x0b\x32\x14.p4.v1.P4HeaderStackH\x00\x12\x37\n\x12header_union_stack\x18\t \x01(\x0b\x32\x19.p4.v1.P4HeaderUnionStackH\x00\x12\x0e\n\x04\x65num\x18\n \x01(\tH\x00\x12\x0f\n\x05\x65rror\x18\x0b \x01(\tH\x00\x12\x14\n\nenum_value\x18\x0c \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"/\n\x08P4Varbit\x12\x11\n\tbitstring\x18\x01 \x01(\x0c\x12\x10\n\x08\x62itwidth\x18\x02 \x01(\x05\".\n\x0cP4StructLike\x12\x1e\n\x07members\x18\x01 \x03(\x0b\x32\r.p4.v1.P4Data\"0\n\x08P4Header\x12\x10\n\x08is_valid\x18\x01 \x01(\x08\x12\x12\n\nbitstrings\x18\x02 \x03(\x0c\"Q\n\rP4HeaderUnion\x12\x19\n\x11valid_header_name\x18\x01 \x01(\t\x12%\n\x0cvalid_header\x18\x02 \x01(\x0b\x32\x0f.p4.v1.P4Header\"1\n\rP4HeaderStack\x12 \n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x0f.p4.v1.P4Header\";\n\x12P4HeaderUnionStack\x12%\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x14.p4.v1.P4HeaderUnion\"\xbd\x02\n\x0bGenericData\x12\x13\n\tbitstring\x18\x01 \x01(\x0cH\x00\x12,\n\x0cvarbitstring\x18\x02 \x01(\x0b\x32\x14.p4.v1.GenericVarbitH\x00\x12\x0e\n\x04\x62ool\x18\x03 \x01(\x08H\x00\x12\x32\n\x0egeneric_struct\x18\x04 \x01(\x0b\x32\x18.p4.v1.GenericStructLikeH\x00\x12*\n\x0cgeneric_list\x18\x05 \x01(\x0b\x32\x12.p4.v1.GenericListH\x00\x12;\n\x15generic_unordered_set\x18\x06 \x01(\x0b\x32\x1a.p4.v1.GenericUnorderedSetH\x00\x12\x10\n\x06string\x18\x07 \x01(\tH\x00\x12\x0e\n\x04\x65num\x18\x08 \x01(\tH\x00\x12\x14\n\nenum_value\x18\t \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"8\n\x11GenericStructLike\x12#\n\x07members\x18\x01 \x03(\x0b\x32\x12.p4.v1.GenericData\"2\n\x0bGenericList\x12#\n\x07members\x18\x01 \x03(\x0b\x32\x12.p4.v1.GenericData\":\n\x13GenericUnorderedSet\x12#\n\x07members\x18\x01 \x03(\x0b\x32\x12.p4.v1.GenericData\"4\n\rGenericVarbit\x12\x11\n\tbitstring\x18\x01 \x01(\x0c\x12\x10\n\x08\x62itwidth\x18\x02 \x01(\x05\x42&Z$github.com/p4lang/p4runtime/go/p4/v1b\x06proto3' ) @@ -351,6 +351,234 @@ serialized_end=776, ) + +_GENERICDATA = _descriptor.Descriptor( + name='GenericData', + full_name='p4.v1.GenericData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='bitstring', full_name='p4.v1.GenericData.bitstring', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='varbitstring', full_name='p4.v1.GenericData.varbitstring', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='bool', full_name='p4.v1.GenericData.bool', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='generic_struct', full_name='p4.v1.GenericData.generic_struct', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='generic_list', full_name='p4.v1.GenericData.generic_list', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='generic_unordered_set', full_name='p4.v1.GenericData.generic_unordered_set', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='string', full_name='p4.v1.GenericData.string', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='enum', full_name='p4.v1.GenericData.enum', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='enum_value', full_name='p4.v1.GenericData.enum_value', index=8, + number=9, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='data', full_name='p4.v1.GenericData.data', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=779, + serialized_end=1096, +) + + +_GENERICSTRUCTLIKE = _descriptor.Descriptor( + name='GenericStructLike', + full_name='p4.v1.GenericStructLike', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='members', full_name='p4.v1.GenericStructLike.members', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1098, + serialized_end=1154, +) + + +_GENERICLIST = _descriptor.Descriptor( + name='GenericList', + full_name='p4.v1.GenericList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='members', full_name='p4.v1.GenericList.members', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1156, + serialized_end=1206, +) + + +_GENERICUNORDEREDSET = _descriptor.Descriptor( + name='GenericUnorderedSet', + full_name='p4.v1.GenericUnorderedSet', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='members', full_name='p4.v1.GenericUnorderedSet.members', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1208, + serialized_end=1266, +) + + +_GENERICVARBIT = _descriptor.Descriptor( + name='GenericVarbit', + full_name='p4.v1.GenericVarbit', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='bitstring', full_name='p4.v1.GenericVarbit.bitstring', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='bitwidth', full_name='p4.v1.GenericVarbit.bitwidth', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1268, + serialized_end=1320, +) + _P4DATA.fields_by_name['varbit'].message_type = _P4VARBIT _P4DATA.fields_by_name['tuple'].message_type = _P4STRUCTLIKE _P4DATA.fields_by_name['struct'].message_type = _P4STRUCTLIKE @@ -398,6 +626,40 @@ _P4HEADERUNION.fields_by_name['valid_header'].message_type = _P4HEADER _P4HEADERSTACK.fields_by_name['entries'].message_type = _P4HEADER _P4HEADERUNIONSTACK.fields_by_name['entries'].message_type = _P4HEADERUNION +_GENERICDATA.fields_by_name['varbitstring'].message_type = _GENERICVARBIT +_GENERICDATA.fields_by_name['generic_struct'].message_type = _GENERICSTRUCTLIKE +_GENERICDATA.fields_by_name['generic_list'].message_type = _GENERICLIST +_GENERICDATA.fields_by_name['generic_unordered_set'].message_type = _GENERICUNORDEREDSET +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['bitstring']) +_GENERICDATA.fields_by_name['bitstring'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['varbitstring']) +_GENERICDATA.fields_by_name['varbitstring'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['bool']) +_GENERICDATA.fields_by_name['bool'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['generic_struct']) +_GENERICDATA.fields_by_name['generic_struct'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['generic_list']) +_GENERICDATA.fields_by_name['generic_list'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['generic_unordered_set']) +_GENERICDATA.fields_by_name['generic_unordered_set'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['string']) +_GENERICDATA.fields_by_name['string'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['enum']) +_GENERICDATA.fields_by_name['enum'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICDATA.oneofs_by_name['data'].fields.append( + _GENERICDATA.fields_by_name['enum_value']) +_GENERICDATA.fields_by_name['enum_value'].containing_oneof = _GENERICDATA.oneofs_by_name['data'] +_GENERICSTRUCTLIKE.fields_by_name['members'].message_type = _GENERICDATA +_GENERICLIST.fields_by_name['members'].message_type = _GENERICDATA +_GENERICUNORDEREDSET.fields_by_name['members'].message_type = _GENERICDATA DESCRIPTOR.message_types_by_name['P4Data'] = _P4DATA DESCRIPTOR.message_types_by_name['P4Varbit'] = _P4VARBIT DESCRIPTOR.message_types_by_name['P4StructLike'] = _P4STRUCTLIKE @@ -405,6 +667,11 @@ DESCRIPTOR.message_types_by_name['P4HeaderUnion'] = _P4HEADERUNION DESCRIPTOR.message_types_by_name['P4HeaderStack'] = _P4HEADERSTACK DESCRIPTOR.message_types_by_name['P4HeaderUnionStack'] = _P4HEADERUNIONSTACK +DESCRIPTOR.message_types_by_name['GenericData'] = _GENERICDATA +DESCRIPTOR.message_types_by_name['GenericStructLike'] = _GENERICSTRUCTLIKE +DESCRIPTOR.message_types_by_name['GenericList'] = _GENERICLIST +DESCRIPTOR.message_types_by_name['GenericUnorderedSet'] = _GENERICUNORDEREDSET +DESCRIPTOR.message_types_by_name['GenericVarbit'] = _GENERICVARBIT _sym_db.RegisterFileDescriptor(DESCRIPTOR) P4Data = _reflection.GeneratedProtocolMessageType('P4Data', (_message.Message,), { @@ -456,6 +723,41 @@ }) _sym_db.RegisterMessage(P4HeaderUnionStack) +GenericData = _reflection.GeneratedProtocolMessageType('GenericData', (_message.Message,), { + 'DESCRIPTOR' : _GENERICDATA, + '__module__' : 'p4.v1.p4data_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericData) + }) +_sym_db.RegisterMessage(GenericData) + +GenericStructLike = _reflection.GeneratedProtocolMessageType('GenericStructLike', (_message.Message,), { + 'DESCRIPTOR' : _GENERICSTRUCTLIKE, + '__module__' : 'p4.v1.p4data_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericStructLike) + }) +_sym_db.RegisterMessage(GenericStructLike) + +GenericList = _reflection.GeneratedProtocolMessageType('GenericList', (_message.Message,), { + 'DESCRIPTOR' : _GENERICLIST, + '__module__' : 'p4.v1.p4data_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericList) + }) +_sym_db.RegisterMessage(GenericList) + +GenericUnorderedSet = _reflection.GeneratedProtocolMessageType('GenericUnorderedSet', (_message.Message,), { + 'DESCRIPTOR' : _GENERICUNORDEREDSET, + '__module__' : 'p4.v1.p4data_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericUnorderedSet) + }) +_sym_db.RegisterMessage(GenericUnorderedSet) + +GenericVarbit = _reflection.GeneratedProtocolMessageType('GenericVarbit', (_message.Message,), { + 'DESCRIPTOR' : _GENERICVARBIT, + '__module__' : 'p4.v1.p4data_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericVarbit) + }) +_sym_db.RegisterMessage(GenericVarbit) + DESCRIPTOR._options = None # @@protoc_insertion_point(module_scope) diff --git a/py/p4/v1/p4runtime_pb2.py b/py/p4/v1/p4runtime_pb2.py index 0d4b8a0d..16b372f2 100644 --- a/py/p4/v1/p4runtime_pb2.py +++ b/py/p4/v1/p4runtime_pb2.py @@ -24,7 +24,7 @@ syntax='proto3', serialized_options=b'Z$github.com/p4lang/p4runtime/go/p4/v1\370\001\001', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x15p4/v1/p4runtime.proto\x12\x05p4.v1\x1a\x19google/protobuf/any.proto\x1a\x17google/rpc/status.proto\x1a\x19p4/config/v1/p4info.proto\x1a\x12p4/v1/p4data.proto\"\x8c\x02\n\x0cWriteRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x13\n\x07role_id\x18\x02 \x01(\x04\x42\x02\x18\x01\x12\x0c\n\x04role\x18\x06 \x01(\t\x12#\n\x0b\x65lection_id\x18\x03 \x01(\x0b\x32\x0e.p4.v1.Uint128\x12\x1e\n\x07updates\x18\x04 \x03(\x0b\x32\r.p4.v1.Update\x12\x30\n\tatomicity\x18\x05 \x01(\x0e\x32\x1d.p4.v1.WriteRequest.Atomicity\"O\n\tAtomicity\x12\x15\n\x11\x43ONTINUE_ON_ERROR\x10\x00\x12\x15\n\x11ROLLBACK_ON_ERROR\x10\x01\x12\x14\n\x10\x44\x41TAPLANE_ATOMIC\x10\x02\"\x0f\n\rWriteResponse\"O\n\x0bReadRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x0c\n\x04role\x18\x03 \x01(\t\x12\x1f\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\r.p4.v1.Entity\"/\n\x0cReadResponse\x12\x1f\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\r.p4.v1.Entity\"\x86\x01\n\x06Update\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.p4.v1.Update.Type\x12\x1d\n\x06\x65ntity\x18\x02 \x01(\x0b\x32\r.p4.v1.Entity\";\n\x04Type\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06INSERT\x10\x01\x12\n\n\x06MODIFY\x10\x02\x12\n\n\x06\x44\x45LETE\x10\x03\"\x87\x05\n\x06\x45ntity\x12*\n\x0c\x65xtern_entry\x18\x01 \x01(\x0b\x32\x12.p4.v1.ExternEntryH\x00\x12(\n\x0btable_entry\x18\x02 \x01(\x0b\x32\x11.p4.v1.TableEntryH\x00\x12;\n\x15\x61\x63tion_profile_member\x18\x03 \x01(\x0b\x32\x1a.p4.v1.ActionProfileMemberH\x00\x12\x39\n\x14\x61\x63tion_profile_group\x18\x04 \x01(\x0b\x32\x19.p4.v1.ActionProfileGroupH\x00\x12(\n\x0bmeter_entry\x18\x05 \x01(\x0b\x32\x11.p4.v1.MeterEntryH\x00\x12\x35\n\x12\x64irect_meter_entry\x18\x06 \x01(\x0b\x32\x17.p4.v1.DirectMeterEntryH\x00\x12,\n\rcounter_entry\x18\x07 \x01(\x0b\x32\x13.p4.v1.CounterEntryH\x00\x12\x39\n\x14\x64irect_counter_entry\x18\x08 \x01(\x0b\x32\x19.p4.v1.DirectCounterEntryH\x00\x12N\n\x1fpacket_replication_engine_entry\x18\t \x01(\x0b\x32#.p4.v1.PacketReplicationEngineEntryH\x00\x12/\n\x0fvalue_set_entry\x18\n \x01(\x0b\x32\x14.p4.v1.ValueSetEntryH\x00\x12.\n\x0eregister_entry\x18\x0b \x01(\x0b\x32\x14.p4.v1.RegisterEntryH\x00\x12*\n\x0c\x64igest_entry\x18\x0c \x01(\x0b\x32\x12.p4.v1.DigestEntryH\x00\x42\x08\n\x06\x65ntity\"]\n\x0b\x45xternEntry\x12\x16\n\x0e\x65xtern_type_id\x18\x01 \x01(\r\x12\x11\n\textern_id\x18\x02 \x01(\r\x12#\n\x05\x65ntry\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\"\xd7\x03\n\nTableEntry\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12 \n\x05match\x18\x02 \x03(\x0b\x32\x11.p4.v1.FieldMatch\x12\"\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x12.p4.v1.TableAction\x12\x10\n\x08priority\x18\x04 \x01(\x05\x12\x1f\n\x13\x63ontroller_metadata\x18\x05 \x01(\x04\x42\x02\x18\x01\x12(\n\x0cmeter_config\x18\x06 \x01(\x0b\x32\x12.p4.v1.MeterConfig\x12(\n\x0c\x63ounter_data\x18\x07 \x01(\x0b\x32\x12.p4.v1.CounterData\x12\x33\n\x12meter_counter_data\x18\x0c \x01(\x0b\x32\x17.p4.v1.MeterCounterData\x12\x19\n\x11is_default_action\x18\x08 \x01(\x08\x12\x17\n\x0fidle_timeout_ns\x18\t \x01(\x03\x12:\n\x13time_since_last_hit\x18\n \x01(\x0b\x32\x1d.p4.v1.TableEntry.IdleTimeout\x12\x10\n\x08metadata\x18\x0b \x01(\x0c\x12\x10\n\x08is_const\x18\r \x01(\x08\x1a!\n\x0bIdleTimeout\x12\x12\n\nelapsed_ns\x18\x01 \x01(\x03\"\xda\x03\n\nFieldMatch\x12\x10\n\x08\x66ield_id\x18\x01 \x01(\r\x12(\n\x05\x65xact\x18\x02 \x01(\x0b\x32\x17.p4.v1.FieldMatch.ExactH\x00\x12,\n\x07ternary\x18\x03 \x01(\x0b\x32\x19.p4.v1.FieldMatch.TernaryH\x00\x12$\n\x03lpm\x18\x04 \x01(\x0b\x32\x15.p4.v1.FieldMatch.LPMH\x00\x12(\n\x05range\x18\x06 \x01(\x0b\x32\x17.p4.v1.FieldMatch.RangeH\x00\x12.\n\x08optional\x18\x07 \x01(\x0b\x32\x1a.p4.v1.FieldMatch.OptionalH\x00\x12%\n\x05other\x18\x64 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x1a\x16\n\x05\x45xact\x12\r\n\x05value\x18\x01 \x01(\x0c\x1a&\n\x07Ternary\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x0c\n\x04mask\x18\x02 \x01(\x0c\x1a(\n\x03LPM\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x12\n\nprefix_len\x18\x02 \x01(\x05\x1a\"\n\x05Range\x12\x0b\n\x03low\x18\x01 \x01(\x0c\x12\x0c\n\x04high\x18\x02 \x01(\x0c\x1a\x19\n\x08Optional\x12\r\n\x05value\x18\x01 \x01(\x0c\x42\x12\n\x10\x66ield_match_type\"\xc1\x01\n\x0bTableAction\x12\x1f\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\r.p4.v1.ActionH\x00\x12\"\n\x18\x61\x63tion_profile_member_id\x18\x02 \x01(\rH\x00\x12!\n\x17\x61\x63tion_profile_group_id\x18\x03 \x01(\rH\x00\x12\x42\n\x19\x61\x63tion_profile_action_set\x18\x04 \x01(\x0b\x32\x1d.p4.v1.ActionProfileActionSetH\x00\x42\x06\n\x04type\"j\n\x06\x41\x63tion\x12\x11\n\taction_id\x18\x01 \x01(\r\x12#\n\x06params\x18\x04 \x03(\x0b\x32\x13.p4.v1.Action.Param\x1a(\n\x05Param\x12\x10\n\x08param_id\x18\x02 \x01(\r\x12\r\n\x05value\x18\x03 \x01(\x0c\"T\n\x16\x41\x63tionProfileActionSet\x12:\n\x16\x61\x63tion_profile_actions\x18\x01 \x03(\x0b\x32\x1a.p4.v1.ActionProfileAction\"}\n\x13\x41\x63tionProfileAction\x12\x1d\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\r.p4.v1.Action\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x13\n\x05watch\x18\x03 \x01(\x05\x42\x02\x18\x01H\x00\x12\x14\n\nwatch_port\x18\x04 \x01(\x0cH\x00\x42\x0c\n\nwatch_kind\"b\n\x13\x41\x63tionProfileMember\x12\x19\n\x11\x61\x63tion_profile_id\x18\x01 \x01(\r\x12\x11\n\tmember_id\x18\x02 \x01(\r\x12\x1d\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\r.p4.v1.Action\"\xec\x01\n\x12\x41\x63tionProfileGroup\x12\x19\n\x11\x61\x63tion_profile_id\x18\x01 \x01(\r\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12\x31\n\x07members\x18\x03 \x03(\x0b\x32 .p4.v1.ActionProfileGroup.Member\x12\x10\n\x08max_size\x18\x04 \x01(\x05\x1a\x64\n\x06Member\x12\x11\n\tmember_id\x18\x01 \x01(\r\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x13\n\x05watch\x18\x03 \x01(\x05\x42\x02\x18\x01H\x00\x12\x14\n\nwatch_port\x18\x04 \x01(\x0cH\x00\x42\x0c\n\nwatch_kind\"\x16\n\x05Index\x12\r\n\x05index\x18\x01 \x01(\x03\"\x8e\x01\n\nMeterEntry\x12\x10\n\x08meter_id\x18\x01 \x01(\r\x12\x1b\n\x05index\x18\x02 \x01(\x0b\x32\x0c.p4.v1.Index\x12\"\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x12.p4.v1.MeterConfig\x12-\n\x0c\x63ounter_data\x18\x04 \x01(\x0b\x32\x17.p4.v1.MeterCounterData\"\x8d\x01\n\x10\x44irectMeterEntry\x12&\n\x0btable_entry\x18\x01 \x01(\x0b\x32\x11.p4.v1.TableEntry\x12\"\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x12.p4.v1.MeterConfig\x12-\n\x0c\x63ounter_data\x18\x03 \x01(\x0b\x32\x17.p4.v1.MeterCounterData\"G\n\x0bMeterConfig\x12\x0b\n\x03\x63ir\x18\x01 \x01(\x03\x12\x0e\n\x06\x63\x62urst\x18\x02 \x01(\x03\x12\x0b\n\x03pir\x18\x03 \x01(\x03\x12\x0e\n\x06pburst\x18\x04 \x01(\x03\"a\n\x0c\x43ounterEntry\x12\x12\n\ncounter_id\x18\x01 \x01(\r\x12\x1b\n\x05index\x18\x02 \x01(\x0b\x32\x0c.p4.v1.Index\x12 \n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x12.p4.v1.CounterData\"^\n\x12\x44irectCounterEntry\x12&\n\x0btable_entry\x18\x01 \x01(\x0b\x32\x11.p4.v1.TableEntry\x12 \n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x12.p4.v1.CounterData\"7\n\x0b\x43ounterData\x12\x12\n\nbyte_count\x18\x01 \x01(\x03\x12\x14\n\x0cpacket_count\x18\x02 \x01(\x03\"z\n\x10MeterCounterData\x12!\n\x05green\x18\x01 \x01(\x0b\x32\x12.p4.v1.CounterData\x12\"\n\x06yellow\x18\x02 \x01(\x0b\x32\x12.p4.v1.CounterData\x12\x1f\n\x03red\x18\x03 \x01(\x0b\x32\x12.p4.v1.CounterData\"\x9c\x01\n\x1cPacketReplicationEngineEntry\x12;\n\x15multicast_group_entry\x18\x01 \x01(\x0b\x32\x1a.p4.v1.MulticastGroupEntryH\x00\x12\x37\n\x13\x63lone_session_entry\x18\x02 \x01(\x0b\x32\x18.p4.v1.CloneSessionEntryH\x00\x42\x06\n\x04type\"S\n\x07Replica\x12\x19\n\x0b\x65gress_port\x18\x01 \x01(\rB\x02\x18\x01H\x00\x12\x0e\n\x04port\x18\x03 \x01(\x0cH\x00\x12\x10\n\x08instance\x18\x02 \x01(\rB\x0b\n\tport_kind\"e\n\x13MulticastGroupEntry\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\r\x12 \n\x08replicas\x18\x02 \x03(\x0b\x32\x0e.p4.v1.Replica\x12\x10\n\x08metadata\x18\x03 \x01(\x0c\"\x80\x01\n\x11\x43loneSessionEntry\x12\x12\n\nsession_id\x18\x01 \x01(\r\x12 \n\x08replicas\x18\x02 \x03(\x0b\x32\x0e.p4.v1.Replica\x12\x18\n\x10\x63lass_of_service\x18\x03 \x01(\r\x12\x1b\n\x13packet_length_bytes\x18\x04 \x01(\x05\"2\n\x0eValueSetMember\x12 \n\x05match\x18\x01 \x03(\x0b\x32\x11.p4.v1.FieldMatch\"M\n\rValueSetEntry\x12\x14\n\x0cvalue_set_id\x18\x01 \x01(\r\x12&\n\x07members\x18\x02 \x03(\x0b\x32\x15.p4.v1.ValueSetMember\"^\n\rRegisterEntry\x12\x13\n\x0bregister_id\x18\x01 \x01(\r\x12\x1b\n\x05index\x18\x02 \x01(\x0b\x32\x0c.p4.v1.Index\x12\x1b\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\r.p4.v1.P4Data\"\x9c\x01\n\x0b\x44igestEntry\x12\x11\n\tdigest_id\x18\x01 \x01(\r\x12)\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x19.p4.v1.DigestEntry.Config\x1aO\n\x06\x43onfig\x12\x16\n\x0emax_timeout_ns\x18\x01 \x01(\x03\x12\x15\n\rmax_list_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x61\x63k_timeout_ns\x18\x03 \x01(\x03\"\xce\x01\n\x14StreamMessageRequest\x12\x35\n\x0b\x61rbitration\x18\x01 \x01(\x0b\x32\x1e.p4.v1.MasterArbitrationUpdateH\x00\x12\"\n\x06packet\x18\x02 \x01(\x0b\x32\x10.p4.v1.PacketOutH\x00\x12*\n\ndigest_ack\x18\x03 \x01(\x0b\x32\x14.p4.v1.DigestListAckH\x00\x12%\n\x05other\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\x08\n\x06update\"E\n\tPacketOut\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\'\n\x08metadata\x18\x02 \x03(\x0b\x32\x15.p4.v1.PacketMetadata\"3\n\rDigestListAck\x12\x11\n\tdigest_id\x18\x01 \x01(\r\x12\x0f\n\x07list_id\x18\x02 \x01(\x04\"\xb1\x02\n\x15StreamMessageResponse\x12\x35\n\x0b\x61rbitration\x18\x01 \x01(\x0b\x32\x1e.p4.v1.MasterArbitrationUpdateH\x00\x12!\n\x06packet\x18\x02 \x01(\x0b\x32\x0f.p4.v1.PacketInH\x00\x12#\n\x06\x64igest\x18\x03 \x01(\x0b\x32\x11.p4.v1.DigestListH\x00\x12\x43\n\x19idle_timeout_notification\x18\x04 \x01(\x0b\x32\x1e.p4.v1.IdleTimeoutNotificationH\x00\x12%\n\x05other\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x12.p4.v1.StreamErrorH\x00\x42\x08\n\x06update\"D\n\x08PacketIn\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\'\n\x08metadata\x18\x02 \x03(\x0b\x32\x15.p4.v1.PacketMetadata\"`\n\nDigestList\x12\x11\n\tdigest_id\x18\x01 \x01(\r\x12\x0f\n\x07list_id\x18\x02 \x01(\x04\x12\x1b\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\r.p4.v1.P4Data\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\"4\n\x0ePacketMetadata\x12\x13\n\x0bmetadata_id\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\x0c\"\x90\x01\n\x17MasterArbitrationUpdate\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x19\n\x04role\x18\x02 \x01(\x0b\x32\x0b.p4.v1.Role\x12#\n\x0b\x65lection_id\x18\x03 \x01(\x0b\x32\x0e.p4.v1.Uint128\x12\"\n\x06status\x18\x04 \x01(\x0b\x32\x12.google.rpc.Status\"J\n\x04Role\x12\x0e\n\x02id\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x0c\n\x04name\x18\x03 \x01(\t\x12$\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\"T\n\x17IdleTimeoutNotification\x12&\n\x0btable_entry\x18\x01 \x03(\x0b\x32\x11.p4.v1.TableEntry\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\"\xeb\x01\n\x0bStreamError\x12\x16\n\x0e\x63\x61nonical_code\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\r\n\x05space\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\x05\x12+\n\npacket_out\x18\x05 \x01(\x0b\x32\x15.p4.v1.PacketOutErrorH\x00\x12\x34\n\x0f\x64igest_list_ack\x18\x06 \x01(\x0b\x32\x19.p4.v1.DigestListAckErrorH\x00\x12(\n\x05other\x18\x07 \x01(\x0b\x32\x17.p4.v1.StreamOtherErrorH\x00\x42\t\n\x07\x64\x65tails\"6\n\x0ePacketOutError\x12$\n\npacket_out\x18\x01 \x01(\x0b\x32\x10.p4.v1.PacketOut\"C\n\x12\x44igestListAckError\x12-\n\x0f\x64igest_list_ack\x18\x01 \x01(\x0b\x32\x14.p4.v1.DigestListAck\"7\n\x10StreamOtherError\x12#\n\x05other\x18\x01 \x01(\x0b\x32\x14.google.protobuf.Any\"$\n\x07Uint128\x12\x0c\n\x04high\x18\x01 \x01(\x04\x12\x0b\n\x03low\x18\x02 \x01(\x04\"\xeb\x02\n\"SetForwardingPipelineConfigRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x13\n\x07role_id\x18\x02 \x01(\x04\x42\x02\x18\x01\x12\x0c\n\x04role\x18\x06 \x01(\t\x12#\n\x0b\x65lection_id\x18\x03 \x01(\x0b\x32\x0e.p4.v1.Uint128\x12@\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x30.p4.v1.SetForwardingPipelineConfigRequest.Action\x12/\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1f.p4.v1.ForwardingPipelineConfig\"w\n\x06\x41\x63tion\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06VERIFY\x10\x01\x12\x13\n\x0fVERIFY_AND_SAVE\x10\x02\x12\x15\n\x11VERIFY_AND_COMMIT\x10\x03\x12\n\n\x06\x43OMMIT\x10\x04\x12\x18\n\x14RECONCILE_AND_COMMIT\x10\x05\"%\n#SetForwardingPipelineConfigResponse\"\xac\x01\n\x18\x46orwardingPipelineConfig\x12$\n\x06p4info\x18\x01 \x01(\x0b\x32\x14.p4.config.v1.P4Info\x12\x18\n\x10p4_device_config\x18\x02 \x01(\x0c\x12\x36\n\x06\x63ookie\x18\x03 \x01(\x0b\x32&.p4.v1.ForwardingPipelineConfig.Cookie\x1a\x18\n\x06\x43ookie\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\x04\"\xe5\x01\n\"GetForwardingPipelineConfigRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12M\n\rresponse_type\x18\x02 \x01(\x0e\x32\x36.p4.v1.GetForwardingPipelineConfigRequest.ResponseType\"]\n\x0cResponseType\x12\x07\n\x03\x41LL\x10\x00\x12\x0f\n\x0b\x43OOKIE_ONLY\x10\x01\x12\x15\n\x11P4INFO_AND_COOKIE\x10\x02\x12\x1c\n\x18\x44\x45VICE_CONFIG_AND_COOKIE\x10\x03\"V\n#GetForwardingPipelineConfigResponse\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.p4.v1.ForwardingPipelineConfig\"t\n\x05\x45rror\x12\x16\n\x0e\x63\x61nonical_code\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\r\n\x05space\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\x05\x12%\n\x07\x64\x65tails\x18\x05 \x01(\x0b\x32\x14.google.protobuf.Any\"\x15\n\x13\x43\x61pabilitiesRequest\"5\n\x14\x43\x61pabilitiesResponse\x12\x1d\n\x15p4runtime_api_version\x18\x01 \x01(\t*\x8a\x01\n\x07SdnPort\x12\x14\n\x10SDN_PORT_UNKNOWN\x10\x00\x12\x10\n\x0cSDN_PORT_MIN\x10\x01\x12\x19\n\x0cSDN_PORT_MAX\x10\xff\xfd\xff\xff\xff\xff\xff\xff\xff\x01\x12!\n\x14SDN_PORT_RECIRCULATE\x10\xfa\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x19\n\x0cSDN_PORT_CPU\x10\xfd\xff\xff\xff\xff\xff\xff\xff\xff\x01\x32\x83\x04\n\tP4Runtime\x12\x34\n\x05Write\x12\x13.p4.v1.WriteRequest\x1a\x14.p4.v1.WriteResponse\"\x00\x12\x33\n\x04Read\x12\x12.p4.v1.ReadRequest\x1a\x13.p4.v1.ReadResponse\"\x00\x30\x01\x12v\n\x1bSetForwardingPipelineConfig\x12).p4.v1.SetForwardingPipelineConfigRequest\x1a*.p4.v1.SetForwardingPipelineConfigResponse\"\x00\x12v\n\x1bGetForwardingPipelineConfig\x12).p4.v1.GetForwardingPipelineConfigRequest\x1a*.p4.v1.GetForwardingPipelineConfigResponse\"\x00\x12P\n\rStreamChannel\x12\x1b.p4.v1.StreamMessageRequest\x1a\x1c.p4.v1.StreamMessageResponse\"\x00(\x01\x30\x01\x12I\n\x0c\x43\x61pabilities\x12\x1a.p4.v1.CapabilitiesRequest\x1a\x1b.p4.v1.CapabilitiesResponse\"\x00\x42)Z$github.com/p4lang/p4runtime/go/p4/v1\xf8\x01\x01\x62\x06proto3' + serialized_pb=b'\n\x15p4/v1/p4runtime.proto\x12\x05p4.v1\x1a\x19google/protobuf/any.proto\x1a\x17google/rpc/status.proto\x1a\x19p4/config/v1/p4info.proto\x1a\x12p4/v1/p4data.proto\"\x8c\x02\n\x0cWriteRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x13\n\x07role_id\x18\x02 \x01(\x04\x42\x02\x18\x01\x12\x0c\n\x04role\x18\x06 \x01(\t\x12#\n\x0b\x65lection_id\x18\x03 \x01(\x0b\x32\x0e.p4.v1.Uint128\x12\x1e\n\x07updates\x18\x04 \x03(\x0b\x32\r.p4.v1.Update\x12\x30\n\tatomicity\x18\x05 \x01(\x0e\x32\x1d.p4.v1.WriteRequest.Atomicity\"O\n\tAtomicity\x12\x15\n\x11\x43ONTINUE_ON_ERROR\x10\x00\x12\x15\n\x11ROLLBACK_ON_ERROR\x10\x01\x12\x14\n\x10\x44\x41TAPLANE_ATOMIC\x10\x02\"\x0f\n\rWriteResponse\"O\n\x0bReadRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x0c\n\x04role\x18\x03 \x01(\t\x12\x1f\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\r.p4.v1.Entity\"/\n\x0cReadResponse\x12\x1f\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\r.p4.v1.Entity\"\x86\x01\n\x06Update\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.p4.v1.Update.Type\x12\x1d\n\x06\x65ntity\x18\x02 \x01(\x0b\x32\r.p4.v1.Entity\";\n\x04Type\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06INSERT\x10\x01\x12\n\n\x06MODIFY\x10\x02\x12\n\n\x06\x44\x45LETE\x10\x03\"\xc0\x05\n\x06\x45ntity\x12*\n\x0c\x65xtern_entry\x18\x01 \x01(\x0b\x32\x12.p4.v1.ExternEntryH\x00\x12(\n\x0btable_entry\x18\x02 \x01(\x0b\x32\x11.p4.v1.TableEntryH\x00\x12;\n\x15\x61\x63tion_profile_member\x18\x03 \x01(\x0b\x32\x1a.p4.v1.ActionProfileMemberH\x00\x12\x39\n\x14\x61\x63tion_profile_group\x18\x04 \x01(\x0b\x32\x19.p4.v1.ActionProfileGroupH\x00\x12(\n\x0bmeter_entry\x18\x05 \x01(\x0b\x32\x11.p4.v1.MeterEntryH\x00\x12\x35\n\x12\x64irect_meter_entry\x18\x06 \x01(\x0b\x32\x17.p4.v1.DirectMeterEntryH\x00\x12,\n\rcounter_entry\x18\x07 \x01(\x0b\x32\x13.p4.v1.CounterEntryH\x00\x12\x39\n\x14\x64irect_counter_entry\x18\x08 \x01(\x0b\x32\x19.p4.v1.DirectCounterEntryH\x00\x12N\n\x1fpacket_replication_engine_entry\x18\t \x01(\x0b\x32#.p4.v1.PacketReplicationEngineEntryH\x00\x12/\n\x0fvalue_set_entry\x18\n \x01(\x0b\x32\x14.p4.v1.ValueSetEntryH\x00\x12.\n\x0eregister_entry\x18\x0b \x01(\x0b\x32\x14.p4.v1.RegisterEntryH\x00\x12*\n\x0c\x64igest_entry\x18\x0c \x01(\x0b\x32\x12.p4.v1.DigestEntryH\x00\x12\x37\n\x13generic_table_entry\x18\r \x01(\x0b\x32\x18.p4.v1.GenericTableEntryH\x00\x42\x08\n\x06\x65ntity\"]\n\x0b\x45xternEntry\x12\x16\n\x0e\x65xtern_type_id\x18\x01 \x01(\r\x12\x11\n\textern_id\x18\x02 \x01(\r\x12#\n\x05\x65ntry\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\"\x84\x04\n\nTableEntry\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12 \n\x05match\x18\x02 \x03(\x0b\x32\x11.p4.v1.FieldMatch\x12\"\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x12.p4.v1.TableAction\x12\x10\n\x08priority\x18\x04 \x01(\x05\x12\x1f\n\x13\x63ontroller_metadata\x18\x05 \x01(\x04\x42\x02\x18\x01\x12(\n\x0cmeter_config\x18\x06 \x01(\x0b\x32\x12.p4.v1.MeterConfig\x12(\n\x0c\x63ounter_data\x18\x07 \x01(\x0b\x32\x12.p4.v1.CounterData\x12\x33\n\x12meter_counter_data\x18\x0c \x01(\x0b\x32\x17.p4.v1.MeterCounterData\x12\x19\n\x11is_default_action\x18\x08 \x01(\x08\x12\x17\n\x0fidle_timeout_ns\x18\t \x01(\x03\x12:\n\x13time_since_last_hit\x18\n \x01(\x0b\x32\x1d.p4.v1.TableEntry.IdleTimeout\x12\x10\n\x08metadata\x18\x0b \x01(\x0c\x12\x10\n\x08is_const\x18\r \x01(\x08\x12+\n\tresources\x18\x0e \x03(\x0b\x32\x18.p4.v1.GenericTableEntry\x1a!\n\x0bIdleTimeout\x12\x12\n\nelapsed_ns\x18\x01 \x01(\x03\"\xda\x03\n\nFieldMatch\x12\x10\n\x08\x66ield_id\x18\x01 \x01(\r\x12(\n\x05\x65xact\x18\x02 \x01(\x0b\x32\x17.p4.v1.FieldMatch.ExactH\x00\x12,\n\x07ternary\x18\x03 \x01(\x0b\x32\x19.p4.v1.FieldMatch.TernaryH\x00\x12$\n\x03lpm\x18\x04 \x01(\x0b\x32\x15.p4.v1.FieldMatch.LPMH\x00\x12(\n\x05range\x18\x06 \x01(\x0b\x32\x17.p4.v1.FieldMatch.RangeH\x00\x12.\n\x08optional\x18\x07 \x01(\x0b\x32\x1a.p4.v1.FieldMatch.OptionalH\x00\x12%\n\x05other\x18\x64 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x1a\x16\n\x05\x45xact\x12\r\n\x05value\x18\x01 \x01(\x0c\x1a&\n\x07Ternary\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x0c\n\x04mask\x18\x02 \x01(\x0c\x1a(\n\x03LPM\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x12\n\nprefix_len\x18\x02 \x01(\x05\x1a\"\n\x05Range\x12\x0b\n\x03low\x18\x01 \x01(\x0c\x12\x0c\n\x04high\x18\x02 \x01(\x0c\x1a\x19\n\x08Optional\x12\r\n\x05value\x18\x01 \x01(\x0c\x42\x12\n\x10\x66ield_match_type\"\xc1\x01\n\x0bTableAction\x12\x1f\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\r.p4.v1.ActionH\x00\x12\"\n\x18\x61\x63tion_profile_member_id\x18\x02 \x01(\rH\x00\x12!\n\x17\x61\x63tion_profile_group_id\x18\x03 \x01(\rH\x00\x12\x42\n\x19\x61\x63tion_profile_action_set\x18\x04 \x01(\x0b\x32\x1d.p4.v1.ActionProfileActionSetH\x00\x42\x06\n\x04type\"j\n\x06\x41\x63tion\x12\x11\n\taction_id\x18\x01 \x01(\r\x12#\n\x06params\x18\x04 \x03(\x0b\x32\x13.p4.v1.Action.Param\x1a(\n\x05Param\x12\x10\n\x08param_id\x18\x02 \x01(\r\x12\r\n\x05value\x18\x03 \x01(\x0c\"T\n\x16\x41\x63tionProfileActionSet\x12:\n\x16\x61\x63tion_profile_actions\x18\x01 \x03(\x0b\x32\x1a.p4.v1.ActionProfileAction\"}\n\x13\x41\x63tionProfileAction\x12\x1d\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\r.p4.v1.Action\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x13\n\x05watch\x18\x03 \x01(\x05\x42\x02\x18\x01H\x00\x12\x14\n\nwatch_port\x18\x04 \x01(\x0cH\x00\x42\x0c\n\nwatch_kind\"b\n\x13\x41\x63tionProfileMember\x12\x19\n\x11\x61\x63tion_profile_id\x18\x01 \x01(\r\x12\x11\n\tmember_id\x18\x02 \x01(\r\x12\x1d\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\r.p4.v1.Action\"\xec\x01\n\x12\x41\x63tionProfileGroup\x12\x19\n\x11\x61\x63tion_profile_id\x18\x01 \x01(\r\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12\x31\n\x07members\x18\x03 \x03(\x0b\x32 .p4.v1.ActionProfileGroup.Member\x12\x10\n\x08max_size\x18\x04 \x01(\x05\x1a\x64\n\x06Member\x12\x11\n\tmember_id\x18\x01 \x01(\r\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x13\n\x05watch\x18\x03 \x01(\x05\x42\x02\x18\x01H\x00\x12\x14\n\nwatch_port\x18\x04 \x01(\x0cH\x00\x42\x0c\n\nwatch_kind\"\x16\n\x05Index\x12\r\n\x05index\x18\x01 \x01(\x03\"\x8e\x01\n\nMeterEntry\x12\x10\n\x08meter_id\x18\x01 \x01(\r\x12\x1b\n\x05index\x18\x02 \x01(\x0b\x32\x0c.p4.v1.Index\x12\"\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x12.p4.v1.MeterConfig\x12-\n\x0c\x63ounter_data\x18\x04 \x01(\x0b\x32\x17.p4.v1.MeterCounterData\"\x8d\x01\n\x10\x44irectMeterEntry\x12&\n\x0btable_entry\x18\x01 \x01(\x0b\x32\x11.p4.v1.TableEntry\x12\"\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x12.p4.v1.MeterConfig\x12-\n\x0c\x63ounter_data\x18\x03 \x01(\x0b\x32\x17.p4.v1.MeterCounterData\"G\n\x0bMeterConfig\x12\x0b\n\x03\x63ir\x18\x01 \x01(\x03\x12\x0e\n\x06\x63\x62urst\x18\x02 \x01(\x03\x12\x0b\n\x03pir\x18\x03 \x01(\x03\x12\x0e\n\x06pburst\x18\x04 \x01(\x03\"a\n\x0c\x43ounterEntry\x12\x12\n\ncounter_id\x18\x01 \x01(\r\x12\x1b\n\x05index\x18\x02 \x01(\x0b\x32\x0c.p4.v1.Index\x12 \n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x12.p4.v1.CounterData\"^\n\x12\x44irectCounterEntry\x12&\n\x0btable_entry\x18\x01 \x01(\x0b\x32\x11.p4.v1.TableEntry\x12 \n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x12.p4.v1.CounterData\"7\n\x0b\x43ounterData\x12\x12\n\nbyte_count\x18\x01 \x01(\x03\x12\x14\n\x0cpacket_count\x18\x02 \x01(\x03\"z\n\x10MeterCounterData\x12!\n\x05green\x18\x01 \x01(\x0b\x32\x12.p4.v1.CounterData\x12\"\n\x06yellow\x18\x02 \x01(\x0b\x32\x12.p4.v1.CounterData\x12\x1f\n\x03red\x18\x03 \x01(\x0b\x32\x12.p4.v1.CounterData\"\x9c\x01\n\x1cPacketReplicationEngineEntry\x12;\n\x15multicast_group_entry\x18\x01 \x01(\x0b\x32\x1a.p4.v1.MulticastGroupEntryH\x00\x12\x37\n\x13\x63lone_session_entry\x18\x02 \x01(\x0b\x32\x18.p4.v1.CloneSessionEntryH\x00\x42\x06\n\x04type\"S\n\x07Replica\x12\x19\n\x0b\x65gress_port\x18\x01 \x01(\rB\x02\x18\x01H\x00\x12\x0e\n\x04port\x18\x03 \x01(\x0cH\x00\x12\x10\n\x08instance\x18\x02 \x01(\rB\x0b\n\tport_kind\"e\n\x13MulticastGroupEntry\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\r\x12 \n\x08replicas\x18\x02 \x03(\x0b\x32\x0e.p4.v1.Replica\x12\x10\n\x08metadata\x18\x03 \x01(\x0c\"\x80\x01\n\x11\x43loneSessionEntry\x12\x12\n\nsession_id\x18\x01 \x01(\r\x12 \n\x08replicas\x18\x02 \x03(\x0b\x32\x0e.p4.v1.Replica\x12\x18\n\x10\x63lass_of_service\x18\x03 \x01(\r\x12\x1b\n\x13packet_length_bytes\x18\x04 \x01(\x05\"2\n\x0eValueSetMember\x12 \n\x05match\x18\x01 \x03(\x0b\x32\x11.p4.v1.FieldMatch\"M\n\rValueSetEntry\x12\x14\n\x0cvalue_set_id\x18\x01 \x01(\r\x12&\n\x07members\x18\x02 \x03(\x0b\x32\x15.p4.v1.ValueSetMember\"^\n\rRegisterEntry\x12\x13\n\x0bregister_id\x18\x01 \x01(\r\x12\x1b\n\x05index\x18\x02 \x01(\x0b\x32\x0c.p4.v1.Index\x12\x1b\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\r.p4.v1.P4Data\"\x9c\x01\n\x0b\x44igestEntry\x12\x11\n\tdigest_id\x18\x01 \x01(\r\x12)\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x19.p4.v1.DigestEntry.Config\x1aO\n\x06\x43onfig\x12\x16\n\x0emax_timeout_ns\x18\x01 \x01(\x03\x12\x15\n\rmax_list_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x61\x63k_timeout_ns\x18\x03 \x01(\x03\"\xce\x01\n\x14StreamMessageRequest\x12\x35\n\x0b\x61rbitration\x18\x01 \x01(\x0b\x32\x1e.p4.v1.MasterArbitrationUpdateH\x00\x12\"\n\x06packet\x18\x02 \x01(\x0b\x32\x10.p4.v1.PacketOutH\x00\x12*\n\ndigest_ack\x18\x03 \x01(\x0b\x32\x14.p4.v1.DigestListAckH\x00\x12%\n\x05other\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\x08\n\x06update\"E\n\tPacketOut\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\'\n\x08metadata\x18\x02 \x03(\x0b\x32\x15.p4.v1.PacketMetadata\"3\n\rDigestListAck\x12\x11\n\tdigest_id\x18\x01 \x01(\r\x12\x0f\n\x07list_id\x18\x02 \x01(\x04\"\xb1\x02\n\x15StreamMessageResponse\x12\x35\n\x0b\x61rbitration\x18\x01 \x01(\x0b\x32\x1e.p4.v1.MasterArbitrationUpdateH\x00\x12!\n\x06packet\x18\x02 \x01(\x0b\x32\x0f.p4.v1.PacketInH\x00\x12#\n\x06\x64igest\x18\x03 \x01(\x0b\x32\x11.p4.v1.DigestListH\x00\x12\x43\n\x19idle_timeout_notification\x18\x04 \x01(\x0b\x32\x1e.p4.v1.IdleTimeoutNotificationH\x00\x12%\n\x05other\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x12.p4.v1.StreamErrorH\x00\x42\x08\n\x06update\"D\n\x08PacketIn\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\'\n\x08metadata\x18\x02 \x03(\x0b\x32\x15.p4.v1.PacketMetadata\"`\n\nDigestList\x12\x11\n\tdigest_id\x18\x01 \x01(\r\x12\x0f\n\x07list_id\x18\x02 \x01(\x04\x12\x1b\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\r.p4.v1.P4Data\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\"4\n\x0ePacketMetadata\x12\x13\n\x0bmetadata_id\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\x0c\"\x90\x01\n\x17MasterArbitrationUpdate\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x19\n\x04role\x18\x02 \x01(\x0b\x32\x0b.p4.v1.Role\x12#\n\x0b\x65lection_id\x18\x03 \x01(\x0b\x32\x0e.p4.v1.Uint128\x12\"\n\x06status\x18\x04 \x01(\x0b\x32\x12.google.rpc.Status\"J\n\x04Role\x12\x0e\n\x02id\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x0c\n\x04name\x18\x03 \x01(\t\x12$\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\"T\n\x17IdleTimeoutNotification\x12&\n\x0btable_entry\x18\x01 \x03(\x0b\x32\x11.p4.v1.TableEntry\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\"\xeb\x01\n\x0bStreamError\x12\x16\n\x0e\x63\x61nonical_code\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\r\n\x05space\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\x05\x12+\n\npacket_out\x18\x05 \x01(\x0b\x32\x15.p4.v1.PacketOutErrorH\x00\x12\x34\n\x0f\x64igest_list_ack\x18\x06 \x01(\x0b\x32\x19.p4.v1.DigestListAckErrorH\x00\x12(\n\x05other\x18\x07 \x01(\x0b\x32\x17.p4.v1.StreamOtherErrorH\x00\x42\t\n\x07\x64\x65tails\"6\n\x0ePacketOutError\x12$\n\npacket_out\x18\x01 \x01(\x0b\x32\x10.p4.v1.PacketOut\"C\n\x12\x44igestListAckError\x12-\n\x0f\x64igest_list_ack\x18\x01 \x01(\x0b\x32\x14.p4.v1.DigestListAck\"7\n\x10StreamOtherError\x12#\n\x05other\x18\x01 \x01(\x0b\x32\x14.google.protobuf.Any\"$\n\x07Uint128\x12\x0c\n\x04high\x18\x01 \x01(\x04\x12\x0b\n\x03low\x18\x02 \x01(\x04\"\xeb\x02\n\"SetForwardingPipelineConfigRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12\x13\n\x07role_id\x18\x02 \x01(\x04\x42\x02\x18\x01\x12\x0c\n\x04role\x18\x06 \x01(\t\x12#\n\x0b\x65lection_id\x18\x03 \x01(\x0b\x32\x0e.p4.v1.Uint128\x12@\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x30.p4.v1.SetForwardingPipelineConfigRequest.Action\x12/\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1f.p4.v1.ForwardingPipelineConfig\"w\n\x06\x41\x63tion\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06VERIFY\x10\x01\x12\x13\n\x0fVERIFY_AND_SAVE\x10\x02\x12\x15\n\x11VERIFY_AND_COMMIT\x10\x03\x12\n\n\x06\x43OMMIT\x10\x04\x12\x18\n\x14RECONCILE_AND_COMMIT\x10\x05\"%\n#SetForwardingPipelineConfigResponse\"\xac\x01\n\x18\x46orwardingPipelineConfig\x12$\n\x06p4info\x18\x01 \x01(\x0b\x32\x14.p4.config.v1.P4Info\x12\x18\n\x10p4_device_config\x18\x02 \x01(\x0c\x12\x36\n\x06\x63ookie\x18\x03 \x01(\x0b\x32&.p4.v1.ForwardingPipelineConfig.Cookie\x1a\x18\n\x06\x43ookie\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\x04\"\xe5\x01\n\"GetForwardingPipelineConfigRequest\x12\x11\n\tdevice_id\x18\x01 \x01(\x04\x12M\n\rresponse_type\x18\x02 \x01(\x0e\x32\x36.p4.v1.GetForwardingPipelineConfigRequest.ResponseType\"]\n\x0cResponseType\x12\x07\n\x03\x41LL\x10\x00\x12\x0f\n\x0b\x43OOKIE_ONLY\x10\x01\x12\x15\n\x11P4INFO_AND_COOKIE\x10\x02\x12\x1c\n\x18\x44\x45VICE_CONFIG_AND_COOKIE\x10\x03\"V\n#GetForwardingPipelineConfigResponse\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.p4.v1.ForwardingPipelineConfig\"t\n\x05\x45rror\x12\x16\n\x0e\x63\x61nonical_code\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\r\n\x05space\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\x05\x12%\n\x07\x64\x65tails\x18\x05 \x01(\x0b\x32\x14.google.protobuf.Any\"\x15\n\x13\x43\x61pabilitiesRequest\"5\n\x14\x43\x61pabilitiesResponse\x12\x1d\n\x15p4runtime_api_version\x18\x01 \x01(\t\"\xac\x04\n\x11GenericFieldMatch\x12\x10\n\x08\x66ield_id\x18\x01 \x01(\r\x12/\n\x05\x65xact\x18\x02 \x01(\x0b\x32\x1e.p4.v1.GenericFieldMatch.ExactH\x00\x12\x33\n\x07ternary\x18\x03 \x01(\x0b\x32 .p4.v1.GenericFieldMatch.TernaryH\x00\x12+\n\x03lpm\x18\x04 \x01(\x0b\x32\x1c.p4.v1.GenericFieldMatch.LPMH\x00\x12/\n\x05range\x18\x06 \x01(\x0b\x32\x1e.p4.v1.GenericFieldMatch.RangeH\x00\x12\x35\n\x08optional\x18\x07 \x01(\x0b\x32!.p4.v1.GenericFieldMatch.OptionalH\x00\x12%\n\x05other\x18\x64 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x1a*\n\x05\x45xact\x12!\n\x05value\x18\x01 \x01(\x0b\x32\x12.p4.v1.GenericData\x1a&\n\x07Ternary\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x0c\n\x04mask\x18\x02 \x01(\x0c\x1a(\n\x03LPM\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x12\n\nprefix_len\x18\x02 \x01(\x05\x1a\"\n\x05Range\x12\x0b\n\x03low\x18\x01 \x01(\x0c\x12\x0c\n\x04high\x18\x02 \x01(\x0c\x1a-\n\x08Optional\x12!\n\x05value\x18\x01 \x01(\x0b\x32\x12.p4.v1.GenericDataB\x12\n\x10\x66ield_match_type\"\xbd\x01\n\x11GenericTableEntry\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\'\n\x05match\x18\x02 \x03(\x0b\x32\x18.p4.v1.GenericFieldMatch\x12/\n\x10table_data_union\x18\x03 \x01(\x0b\x32\x15.p4.v1.TableDataUnion\x12\x10\n\x08priority\x18\x04 \x01(\x05\x12\x18\n\x10is_default_entry\x18\x05 \x01(\x08\x12\x10\n\x08metadata\x18\x06 \x01(\x0c\"\x8d\x01\n\x0eTableDataUnion\x12\x10\n\x08union_id\x18\x01 \x01(\r\x12+\n\x06params\x18\x04 \x03(\x0b\x32\x1b.p4.v1.TableDataUnion.Param\x1a<\n\x05Param\x12\x10\n\x08param_id\x18\x02 \x01(\r\x12!\n\x05value\x18\x03 \x01(\x0b\x32\x12.p4.v1.GenericData*\x8a\x01\n\x07SdnPort\x12\x14\n\x10SDN_PORT_UNKNOWN\x10\x00\x12\x10\n\x0cSDN_PORT_MIN\x10\x01\x12\x19\n\x0cSDN_PORT_MAX\x10\xff\xfd\xff\xff\xff\xff\xff\xff\xff\x01\x12!\n\x14SDN_PORT_RECIRCULATE\x10\xfa\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x19\n\x0cSDN_PORT_CPU\x10\xfd\xff\xff\xff\xff\xff\xff\xff\xff\x01\x32\x83\x04\n\tP4Runtime\x12\x34\n\x05Write\x12\x13.p4.v1.WriteRequest\x1a\x14.p4.v1.WriteResponse\"\x00\x12\x33\n\x04Read\x12\x12.p4.v1.ReadRequest\x1a\x13.p4.v1.ReadResponse\"\x00\x30\x01\x12v\n\x1bSetForwardingPipelineConfig\x12).p4.v1.SetForwardingPipelineConfigRequest\x1a*.p4.v1.SetForwardingPipelineConfigResponse\"\x00\x12v\n\x1bGetForwardingPipelineConfig\x12).p4.v1.GetForwardingPipelineConfigRequest\x1a*.p4.v1.GetForwardingPipelineConfigResponse\"\x00\x12P\n\rStreamChannel\x12\x1b.p4.v1.StreamMessageRequest\x1a\x1c.p4.v1.StreamMessageResponse\"\x00(\x01\x30\x01\x12I\n\x0c\x43\x61pabilities\x12\x1a.p4.v1.CapabilitiesRequest\x1a\x1b.p4.v1.CapabilitiesResponse\"\x00\x42)Z$github.com/p4lang/p4runtime/go/p4/v1\xf8\x01\x01\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,google_dot_rpc_dot_status__pb2.DESCRIPTOR,p4_dot_config_dot_v1_dot_p4info__pb2.DESCRIPTOR,p4_dot_v1_dot_p4data__pb2.DESCRIPTOR,]) @@ -63,8 +63,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=7591, - serialized_end=7729, + serialized_start=8588, + serialized_end=8726, ) _sym_db.RegisterEnumDescriptor(_SDNPORT) @@ -181,8 +181,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=6739, - serialized_end=6858, + serialized_start=6841, + serialized_end=6960, ) _sym_db.RegisterEnumDescriptor(_SETFORWARDINGPIPELINECONFIGREQUEST_ACTION) @@ -216,8 +216,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=7211, - serialized_end=7304, + serialized_start=7313, + serialized_end=7406, ) _sym_db.RegisterEnumDescriptor(_GETFORWARDINGPIPELINECONFIGREQUEST_RESPONSETYPE) @@ -525,6 +525,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='generic_table_entry', full_name='p4.v1.Entity.generic_table_entry', index=12, + number=13, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -543,7 +550,7 @@ fields=[]), ], serialized_start=687, - serialized_end=1334, + serialized_end=1391, ) @@ -588,8 +595,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1336, - serialized_end=1429, + serialized_start=1393, + serialized_end=1486, ) @@ -620,8 +627,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1870, - serialized_end=1903, + serialized_start=1972, + serialized_end=2005, ) _TABLEENTRY = _descriptor.Descriptor( @@ -723,6 +730,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='resources', full_name='p4.v1.TableEntry.resources', index=13, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -735,8 +749,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1432, - serialized_end=1903, + serialized_start=1489, + serialized_end=2005, ) @@ -767,8 +781,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2193, - serialized_end=2215, + serialized_start=2295, + serialized_end=2317, ) _FIELDMATCH_TERNARY = _descriptor.Descriptor( @@ -805,8 +819,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2217, - serialized_end=2255, + serialized_start=2319, + serialized_end=2357, ) _FIELDMATCH_LPM = _descriptor.Descriptor( @@ -843,8 +857,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2257, - serialized_end=2297, + serialized_start=2359, + serialized_end=2399, ) _FIELDMATCH_RANGE = _descriptor.Descriptor( @@ -881,8 +895,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2299, - serialized_end=2333, + serialized_start=2401, + serialized_end=2435, ) _FIELDMATCH_OPTIONAL = _descriptor.Descriptor( @@ -912,8 +926,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2335, - serialized_end=2360, + serialized_start=2437, + serialized_end=2462, ) _FIELDMATCH = _descriptor.Descriptor( @@ -990,8 +1004,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1906, - serialized_end=2380, + serialized_start=2008, + serialized_end=2482, ) @@ -1048,8 +1062,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2383, - serialized_end=2576, + serialized_start=2485, + serialized_end=2678, ) @@ -1087,8 +1101,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2644, - serialized_end=2684, + serialized_start=2746, + serialized_end=2786, ) _ACTION = _descriptor.Descriptor( @@ -1125,8 +1139,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2578, - serialized_end=2684, + serialized_start=2680, + serialized_end=2786, ) @@ -1157,8 +1171,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2686, - serialized_end=2770, + serialized_start=2788, + serialized_end=2872, ) @@ -1215,8 +1229,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2772, - serialized_end=2897, + serialized_start=2874, + serialized_end=2999, ) @@ -1261,8 +1275,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2899, - serialized_end=2997, + serialized_start=3001, + serialized_end=3099, ) @@ -1319,8 +1333,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3136, - serialized_end=3236, + serialized_start=3238, + serialized_end=3338, ) _ACTIONPROFILEGROUP = _descriptor.Descriptor( @@ -1371,8 +1385,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3000, - serialized_end=3236, + serialized_start=3102, + serialized_end=3338, ) @@ -1403,8 +1417,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3238, - serialized_end=3260, + serialized_start=3340, + serialized_end=3362, ) @@ -1456,8 +1470,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3263, - serialized_end=3405, + serialized_start=3365, + serialized_end=3507, ) @@ -1502,8 +1516,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3408, - serialized_end=3549, + serialized_start=3510, + serialized_end=3651, ) @@ -1555,8 +1569,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3551, - serialized_end=3622, + serialized_start=3653, + serialized_end=3724, ) @@ -1601,8 +1615,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3624, - serialized_end=3721, + serialized_start=3726, + serialized_end=3823, ) @@ -1640,8 +1654,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3723, - serialized_end=3817, + serialized_start=3825, + serialized_end=3919, ) @@ -1679,8 +1693,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3819, - serialized_end=3874, + serialized_start=3921, + serialized_end=3976, ) @@ -1725,8 +1739,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3876, - serialized_end=3998, + serialized_start=3978, + serialized_end=4100, ) @@ -1769,8 +1783,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4001, - serialized_end=4157, + serialized_start=4103, + serialized_end=4259, ) @@ -1820,8 +1834,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4159, - serialized_end=4242, + serialized_start=4261, + serialized_end=4344, ) @@ -1866,8 +1880,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4244, - serialized_end=4345, + serialized_start=4346, + serialized_end=4447, ) @@ -1919,8 +1933,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4348, - serialized_end=4476, + serialized_start=4450, + serialized_end=4578, ) @@ -1951,8 +1965,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4478, - serialized_end=4528, + serialized_start=4580, + serialized_end=4630, ) @@ -1990,8 +2004,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4530, - serialized_end=4607, + serialized_start=4632, + serialized_end=4709, ) @@ -2036,8 +2050,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4609, - serialized_end=4703, + serialized_start=4711, + serialized_end=4805, ) @@ -2082,8 +2096,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4783, - serialized_end=4862, + serialized_start=4885, + serialized_end=4964, ) _DIGESTENTRY = _descriptor.Descriptor( @@ -2120,8 +2134,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4706, - serialized_end=4862, + serialized_start=4808, + serialized_end=4964, ) @@ -2178,8 +2192,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4865, - serialized_end=5071, + serialized_start=4967, + serialized_end=5173, ) @@ -2217,8 +2231,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5073, - serialized_end=5142, + serialized_start=5175, + serialized_end=5244, ) @@ -2256,8 +2270,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5144, - serialized_end=5195, + serialized_start=5246, + serialized_end=5297, ) @@ -2328,8 +2342,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5198, - serialized_end=5503, + serialized_start=5300, + serialized_end=5605, ) @@ -2367,8 +2381,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5505, - serialized_end=5573, + serialized_start=5607, + serialized_end=5675, ) @@ -2420,8 +2434,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5575, - serialized_end=5671, + serialized_start=5677, + serialized_end=5773, ) @@ -2459,8 +2473,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5673, - serialized_end=5725, + serialized_start=5775, + serialized_end=5827, ) @@ -2512,8 +2526,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5728, - serialized_end=5872, + serialized_start=5830, + serialized_end=5974, ) @@ -2558,8 +2572,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5874, - serialized_end=5948, + serialized_start=5976, + serialized_end=6050, ) @@ -2597,8 +2611,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5950, - serialized_end=6034, + serialized_start=6052, + serialized_end=6136, ) @@ -2676,8 +2690,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6037, - serialized_end=6272, + serialized_start=6139, + serialized_end=6374, ) @@ -2708,8 +2722,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6274, - serialized_end=6328, + serialized_start=6376, + serialized_end=6430, ) @@ -2740,8 +2754,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6330, - serialized_end=6397, + serialized_start=6432, + serialized_end=6499, ) @@ -2772,8 +2786,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6399, - serialized_end=6454, + serialized_start=6501, + serialized_end=6556, ) @@ -2811,8 +2825,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6456, - serialized_end=6492, + serialized_start=6558, + serialized_end=6594, ) @@ -2879,8 +2893,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6495, - serialized_end=6858, + serialized_start=6597, + serialized_end=6960, ) @@ -2904,8 +2918,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6860, - serialized_end=6897, + serialized_start=6962, + serialized_end=6999, ) @@ -2936,8 +2950,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7048, - serialized_end=7072, + serialized_start=7150, + serialized_end=7174, ) _FORWARDINGPIPELINECONFIG = _descriptor.Descriptor( @@ -2981,8 +2995,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6900, - serialized_end=7072, + serialized_start=7002, + serialized_end=7174, ) @@ -3021,8 +3035,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7075, - serialized_end=7304, + serialized_start=7177, + serialized_end=7406, ) @@ -3053,8 +3067,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7306, - serialized_end=7392, + serialized_start=7408, + serialized_end=7494, ) @@ -3113,8 +3127,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7394, - serialized_end=7510, + serialized_start=7496, + serialized_end=7612, ) @@ -3138,8 +3152,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7512, - serialized_end=7533, + serialized_start=7614, + serialized_end=7635, ) @@ -3170,8 +3184,407 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7535, - serialized_end=7588, + serialized_start=7637, + serialized_end=7690, +) + + +_GENERICFIELDMATCH_EXACT = _descriptor.Descriptor( + name='Exact', + full_name='p4.v1.GenericFieldMatch.Exact', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='p4.v1.GenericFieldMatch.Exact.value', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8022, + serialized_end=8064, +) + +_GENERICFIELDMATCH_TERNARY = _descriptor.Descriptor( + name='Ternary', + full_name='p4.v1.GenericFieldMatch.Ternary', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='p4.v1.GenericFieldMatch.Ternary.value', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='mask', full_name='p4.v1.GenericFieldMatch.Ternary.mask', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2319, + serialized_end=2357, +) + +_GENERICFIELDMATCH_LPM = _descriptor.Descriptor( + name='LPM', + full_name='p4.v1.GenericFieldMatch.LPM', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='p4.v1.GenericFieldMatch.LPM.value', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='prefix_len', full_name='p4.v1.GenericFieldMatch.LPM.prefix_len', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2359, + serialized_end=2399, +) + +_GENERICFIELDMATCH_RANGE = _descriptor.Descriptor( + name='Range', + full_name='p4.v1.GenericFieldMatch.Range', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='low', full_name='p4.v1.GenericFieldMatch.Range.low', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='high', full_name='p4.v1.GenericFieldMatch.Range.high', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2401, + serialized_end=2435, +) + +_GENERICFIELDMATCH_OPTIONAL = _descriptor.Descriptor( + name='Optional', + full_name='p4.v1.GenericFieldMatch.Optional', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='p4.v1.GenericFieldMatch.Optional.value', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8184, + serialized_end=8229, +) + +_GENERICFIELDMATCH = _descriptor.Descriptor( + name='GenericFieldMatch', + full_name='p4.v1.GenericFieldMatch', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='field_id', full_name='p4.v1.GenericFieldMatch.field_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='exact', full_name='p4.v1.GenericFieldMatch.exact', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ternary', full_name='p4.v1.GenericFieldMatch.ternary', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='lpm', full_name='p4.v1.GenericFieldMatch.lpm', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='range', full_name='p4.v1.GenericFieldMatch.range', index=4, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='optional', full_name='p4.v1.GenericFieldMatch.optional', index=5, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='other', full_name='p4.v1.GenericFieldMatch.other', index=6, + number=100, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_GENERICFIELDMATCH_EXACT, _GENERICFIELDMATCH_TERNARY, _GENERICFIELDMATCH_LPM, _GENERICFIELDMATCH_RANGE, _GENERICFIELDMATCH_OPTIONAL, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='field_match_type', full_name='p4.v1.GenericFieldMatch.field_match_type', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=7693, + serialized_end=8249, +) + + +_GENERICTABLEENTRY = _descriptor.Descriptor( + name='GenericTableEntry', + full_name='p4.v1.GenericTableEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='table_id', full_name='p4.v1.GenericTableEntry.table_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='match', full_name='p4.v1.GenericTableEntry.match', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='table_data_union', full_name='p4.v1.GenericTableEntry.table_data_union', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='priority', full_name='p4.v1.GenericTableEntry.priority', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='is_default_entry', full_name='p4.v1.GenericTableEntry.is_default_entry', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='metadata', full_name='p4.v1.GenericTableEntry.metadata', index=5, + number=6, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8252, + serialized_end=8441, +) + + +_TABLEDATAUNION_PARAM = _descriptor.Descriptor( + name='Param', + full_name='p4.v1.TableDataUnion.Param', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='param_id', full_name='p4.v1.TableDataUnion.Param.param_id', index=0, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='p4.v1.TableDataUnion.Param.value', index=1, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8525, + serialized_end=8585, +) + +_TABLEDATAUNION = _descriptor.Descriptor( + name='TableDataUnion', + full_name='p4.v1.TableDataUnion', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='union_id', full_name='p4.v1.TableDataUnion.union_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='params', full_name='p4.v1.TableDataUnion.params', index=1, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_TABLEDATAUNION_PARAM, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=8444, + serialized_end=8585, ) _WRITEREQUEST.fields_by_name['election_id'].message_type = _UINT128 @@ -3195,6 +3608,7 @@ _ENTITY.fields_by_name['value_set_entry'].message_type = _VALUESETENTRY _ENTITY.fields_by_name['register_entry'].message_type = _REGISTERENTRY _ENTITY.fields_by_name['digest_entry'].message_type = _DIGESTENTRY +_ENTITY.fields_by_name['generic_table_entry'].message_type = _GENERICTABLEENTRY _ENTITY.oneofs_by_name['entity'].fields.append( _ENTITY.fields_by_name['extern_entry']) _ENTITY.fields_by_name['extern_entry'].containing_oneof = _ENTITY.oneofs_by_name['entity'] @@ -3231,6 +3645,9 @@ _ENTITY.oneofs_by_name['entity'].fields.append( _ENTITY.fields_by_name['digest_entry']) _ENTITY.fields_by_name['digest_entry'].containing_oneof = _ENTITY.oneofs_by_name['entity'] +_ENTITY.oneofs_by_name['entity'].fields.append( + _ENTITY.fields_by_name['generic_table_entry']) +_ENTITY.fields_by_name['generic_table_entry'].containing_oneof = _ENTITY.oneofs_by_name['entity'] _EXTERNENTRY.fields_by_name['entry'].message_type = google_dot_protobuf_dot_any__pb2._ANY _TABLEENTRY_IDLETIMEOUT.containing_type = _TABLEENTRY _TABLEENTRY.fields_by_name['match'].message_type = _FIELDMATCH @@ -3239,6 +3656,7 @@ _TABLEENTRY.fields_by_name['counter_data'].message_type = _COUNTERDATA _TABLEENTRY.fields_by_name['meter_counter_data'].message_type = _METERCOUNTERDATA _TABLEENTRY.fields_by_name['time_since_last_hit'].message_type = _TABLEENTRY_IDLETIMEOUT +_TABLEENTRY.fields_by_name['resources'].message_type = _GENERICTABLEENTRY _FIELDMATCH_EXACT.containing_type = _FIELDMATCH _FIELDMATCH_TERNARY.containing_type = _FIELDMATCH _FIELDMATCH_LPM.containing_type = _FIELDMATCH @@ -3410,6 +3828,42 @@ _GETFORWARDINGPIPELINECONFIGREQUEST_RESPONSETYPE.containing_type = _GETFORWARDINGPIPELINECONFIGREQUEST _GETFORWARDINGPIPELINECONFIGRESPONSE.fields_by_name['config'].message_type = _FORWARDINGPIPELINECONFIG _ERROR.fields_by_name['details'].message_type = google_dot_protobuf_dot_any__pb2._ANY +_GENERICFIELDMATCH_EXACT.fields_by_name['value'].message_type = p4_dot_v1_dot_p4data__pb2._GENERICDATA +_GENERICFIELDMATCH_EXACT.containing_type = _GENERICFIELDMATCH +_GENERICFIELDMATCH_TERNARY.containing_type = _GENERICFIELDMATCH +_GENERICFIELDMATCH_LPM.containing_type = _GENERICFIELDMATCH +_GENERICFIELDMATCH_RANGE.containing_type = _GENERICFIELDMATCH +_GENERICFIELDMATCH_OPTIONAL.fields_by_name['value'].message_type = p4_dot_v1_dot_p4data__pb2._GENERICDATA +_GENERICFIELDMATCH_OPTIONAL.containing_type = _GENERICFIELDMATCH +_GENERICFIELDMATCH.fields_by_name['exact'].message_type = _GENERICFIELDMATCH_EXACT +_GENERICFIELDMATCH.fields_by_name['ternary'].message_type = _GENERICFIELDMATCH_TERNARY +_GENERICFIELDMATCH.fields_by_name['lpm'].message_type = _GENERICFIELDMATCH_LPM +_GENERICFIELDMATCH.fields_by_name['range'].message_type = _GENERICFIELDMATCH_RANGE +_GENERICFIELDMATCH.fields_by_name['optional'].message_type = _GENERICFIELDMATCH_OPTIONAL +_GENERICFIELDMATCH.fields_by_name['other'].message_type = google_dot_protobuf_dot_any__pb2._ANY +_GENERICFIELDMATCH.oneofs_by_name['field_match_type'].fields.append( + _GENERICFIELDMATCH.fields_by_name['exact']) +_GENERICFIELDMATCH.fields_by_name['exact'].containing_oneof = _GENERICFIELDMATCH.oneofs_by_name['field_match_type'] +_GENERICFIELDMATCH.oneofs_by_name['field_match_type'].fields.append( + _GENERICFIELDMATCH.fields_by_name['ternary']) +_GENERICFIELDMATCH.fields_by_name['ternary'].containing_oneof = _GENERICFIELDMATCH.oneofs_by_name['field_match_type'] +_GENERICFIELDMATCH.oneofs_by_name['field_match_type'].fields.append( + _GENERICFIELDMATCH.fields_by_name['lpm']) +_GENERICFIELDMATCH.fields_by_name['lpm'].containing_oneof = _GENERICFIELDMATCH.oneofs_by_name['field_match_type'] +_GENERICFIELDMATCH.oneofs_by_name['field_match_type'].fields.append( + _GENERICFIELDMATCH.fields_by_name['range']) +_GENERICFIELDMATCH.fields_by_name['range'].containing_oneof = _GENERICFIELDMATCH.oneofs_by_name['field_match_type'] +_GENERICFIELDMATCH.oneofs_by_name['field_match_type'].fields.append( + _GENERICFIELDMATCH.fields_by_name['optional']) +_GENERICFIELDMATCH.fields_by_name['optional'].containing_oneof = _GENERICFIELDMATCH.oneofs_by_name['field_match_type'] +_GENERICFIELDMATCH.oneofs_by_name['field_match_type'].fields.append( + _GENERICFIELDMATCH.fields_by_name['other']) +_GENERICFIELDMATCH.fields_by_name['other'].containing_oneof = _GENERICFIELDMATCH.oneofs_by_name['field_match_type'] +_GENERICTABLEENTRY.fields_by_name['match'].message_type = _GENERICFIELDMATCH +_GENERICTABLEENTRY.fields_by_name['table_data_union'].message_type = _TABLEDATAUNION +_TABLEDATAUNION_PARAM.fields_by_name['value'].message_type = p4_dot_v1_dot_p4data__pb2._GENERICDATA +_TABLEDATAUNION_PARAM.containing_type = _TABLEDATAUNION +_TABLEDATAUNION.fields_by_name['params'].message_type = _TABLEDATAUNION_PARAM DESCRIPTOR.message_types_by_name['WriteRequest'] = _WRITEREQUEST DESCRIPTOR.message_types_by_name['WriteResponse'] = _WRITERESPONSE DESCRIPTOR.message_types_by_name['ReadRequest'] = _READREQUEST @@ -3464,6 +3918,9 @@ DESCRIPTOR.message_types_by_name['Error'] = _ERROR DESCRIPTOR.message_types_by_name['CapabilitiesRequest'] = _CAPABILITIESREQUEST DESCRIPTOR.message_types_by_name['CapabilitiesResponse'] = _CAPABILITIESRESPONSE +DESCRIPTOR.message_types_by_name['GenericFieldMatch'] = _GENERICFIELDMATCH +DESCRIPTOR.message_types_by_name['GenericTableEntry'] = _GENERICTABLEENTRY +DESCRIPTOR.message_types_by_name['TableDataUnion'] = _TABLEDATAUNION DESCRIPTOR.enum_types_by_name['SdnPort'] = _SDNPORT _sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -3925,6 +4382,75 @@ }) _sym_db.RegisterMessage(CapabilitiesResponse) +GenericFieldMatch = _reflection.GeneratedProtocolMessageType('GenericFieldMatch', (_message.Message,), { + + 'Exact' : _reflection.GeneratedProtocolMessageType('Exact', (_message.Message,), { + 'DESCRIPTOR' : _GENERICFIELDMATCH_EXACT, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericFieldMatch.Exact) + }) + , + + 'Ternary' : _reflection.GeneratedProtocolMessageType('Ternary', (_message.Message,), { + 'DESCRIPTOR' : _GENERICFIELDMATCH_TERNARY, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericFieldMatch.Ternary) + }) + , + + 'LPM' : _reflection.GeneratedProtocolMessageType('LPM', (_message.Message,), { + 'DESCRIPTOR' : _GENERICFIELDMATCH_LPM, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericFieldMatch.LPM) + }) + , + + 'Range' : _reflection.GeneratedProtocolMessageType('Range', (_message.Message,), { + 'DESCRIPTOR' : _GENERICFIELDMATCH_RANGE, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericFieldMatch.Range) + }) + , + + 'Optional' : _reflection.GeneratedProtocolMessageType('Optional', (_message.Message,), { + 'DESCRIPTOR' : _GENERICFIELDMATCH_OPTIONAL, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericFieldMatch.Optional) + }) + , + 'DESCRIPTOR' : _GENERICFIELDMATCH, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericFieldMatch) + }) +_sym_db.RegisterMessage(GenericFieldMatch) +_sym_db.RegisterMessage(GenericFieldMatch.Exact) +_sym_db.RegisterMessage(GenericFieldMatch.Ternary) +_sym_db.RegisterMessage(GenericFieldMatch.LPM) +_sym_db.RegisterMessage(GenericFieldMatch.Range) +_sym_db.RegisterMessage(GenericFieldMatch.Optional) + +GenericTableEntry = _reflection.GeneratedProtocolMessageType('GenericTableEntry', (_message.Message,), { + 'DESCRIPTOR' : _GENERICTABLEENTRY, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.GenericTableEntry) + }) +_sym_db.RegisterMessage(GenericTableEntry) + +TableDataUnion = _reflection.GeneratedProtocolMessageType('TableDataUnion', (_message.Message,), { + + 'Param' : _reflection.GeneratedProtocolMessageType('Param', (_message.Message,), { + 'DESCRIPTOR' : _TABLEDATAUNION_PARAM, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.TableDataUnion.Param) + }) + , + 'DESCRIPTOR' : _TABLEDATAUNION, + '__module__' : 'p4.v1.p4runtime_pb2' + # @@protoc_insertion_point(class_scope:p4.v1.TableDataUnion) + }) +_sym_db.RegisterMessage(TableDataUnion) +_sym_db.RegisterMessage(TableDataUnion.Param) + DESCRIPTOR._options = None _WRITEREQUEST.fields_by_name['role_id']._options = None @@ -3942,8 +4468,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=7732, - serialized_end=8247, + serialized_start=8729, + serialized_end=9244, methods=[ _descriptor.MethodDescriptor( name='Write',
Does table have Default entry?
Process every data field that has been specified
Use union from default entry
Error
INSERT
Is data field read-only, modify-only or reset-only?
Specified data fields left?
Process unspecified regular data fields
Is it mandatory?
Process field
Process field and use default value
Unspecified data fields left?
Finish
yes
no
No
Yes