diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..4f574db --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,16 @@ +# How to rebuild the gRIBI protos on OSX + +## Install dependencies + +* brew install coreutils +* brew install protoc-gen-go-grpc +* brew install protoc-gen-go +* go install github.com/openconfig/ygot/proto_generator@latest + +## Update AFT yang + +* Copy the YANG model files for openconfig public AFTs +* Add deviations as needed to gribi-aft.yang +* Run update_schema.sh +* Run generate_proto.sh +* Run check-updated.sh to review for any unexpected changes diff --git a/scripts/update-schema.sh b/scripts/update-schema.sh index e501cc8..734df84 100755 --- a/scripts/update-schema.sh +++ b/scripts/update-schema.sh @@ -16,6 +16,7 @@ # Hack to ensure that if we are running on OS X with a homebrew installed # GNU sed then we can still run sed. + runsed() { if hash gsed 2>/dev/null; then gsed "$@" @@ -38,7 +39,7 @@ if [ -z $SRCDIR ]; then SRC_DIR=`runreadlink -m ${THIS_DIR}/..` fi -proto_generator \ +${GOPATH}/bin/proto_generator \ -path=${SRC_DIR}/v1/yang,${SRC_DIR}/v1/yang/deps \ -output_dir=${SRC_DIR}/v1/proto -compress_paths -generate_fakeroot -fakeroot_name=device \ -package_name=gribi_aft -exclude_modules=ietf-interfaces,openconfig-interfaces \ diff --git a/v1/proto/gribi_aft/enums/enums.pb.go b/v1/proto/gribi_aft/enums/enums.pb.go index f4b92bb..c6bce40 100644 --- a/v1/proto/gribi_aft/enums/enums.pb.go +++ b/v1/proto/gribi_aft/enums/enums.pb.go @@ -9,8 +9,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 -// protoc v3.21.0--rc1 +// protoc-gen-go v1.35.1 +// protoc v5.28.2 // source: v1/proto/gribi_aft/enums/enums.proto package enums @@ -40,6 +40,7 @@ const ( OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6 OpenconfigAftTypesEncapsulationHeaderType = 3 OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS OpenconfigAftTypesEncapsulationHeaderType = 4 OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN OpenconfigAftTypesEncapsulationHeaderType = 5 + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UDP OpenconfigAftTypesEncapsulationHeaderType = 6 ) // Enum value maps for OpenconfigAftTypesEncapsulationHeaderType. @@ -51,6 +52,7 @@ var ( 3: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6", 4: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS", 5: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN", + 6: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UDP", } OpenconfigAftTypesEncapsulationHeaderType_value = map[string]int32{ "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UNSET": 0, @@ -59,6 +61,7 @@ var ( "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6": 3, "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS": 4, "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN": 5, + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UDP": 6, } ) @@ -234,7 +237,7 @@ var file_v1_proto_gribi_aft_enums_enums_proto_rawDesc = []byte{ 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2f, 0x79, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x91, 0x03, 0x0a, 0x29, 0x4f, 0x70, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0xcc, 0x03, 0x0a, 0x29, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x2f, 0x4f, 0x50, 0x45, 0x4e, 0x43, @@ -259,91 +262,94 @@ var file_v1_proto_gribi_aft_enums_enums_proto_rawDesc = []byte{ 0x0a, 0x2f, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, 0x59, 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x58, 0x4c, 0x41, - 0x4e, 0x10, 0x05, 0x1a, 0x08, 0x82, 0x41, 0x05, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x2a, 0x8e, 0x04, - 0x0a, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x4e, - 0x0a, 0x33, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, - 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, - 0x55, 0x4d, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, - 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x1a, 0x15, 0x82, 0x41, 0x12, 0x49, 0x50, 0x56, 0x34, - 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x12, 0x42, - 0x0a, 0x2d, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, - 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, - 0x55, 0x4d, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x10, - 0x02, 0x1a, 0x0f, 0x82, 0x41, 0x0c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, - 0x52, 0x54, 0x12, 0x4e, 0x0a, 0x33, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x45, 0x58, 0x50, 0x4c, - 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x03, 0x1a, 0x15, 0x82, 0x41, 0x12, - 0x49, 0x50, 0x56, 0x36, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, - 0x4c, 0x4c, 0x12, 0x44, 0x0a, 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, - 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x04, 0x1a, 0x10, 0x82, 0x41, 0x0d, 0x49, 0x4d, 0x50, 0x4c, 0x49, - 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x12, 0x58, 0x0a, 0x38, 0x4f, 0x50, 0x45, 0x4e, - 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, - 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x4f, 0x50, 0x59, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x43, - 0x41, 0x54, 0x4f, 0x52, 0x10, 0x08, 0x1a, 0x1a, 0x82, 0x41, 0x17, 0x45, 0x4e, 0x54, 0x52, 0x4f, - 0x50, 0x59, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x41, 0x54, - 0x4f, 0x52, 0x12, 0x3a, 0x0a, 0x29, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, - 0x09, 0x1a, 0x0b, 0x82, 0x41, 0x08, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x2a, 0xe0, - 0x05, 0x0a, 0x24, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x49, 0x50, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x50, 0x45, 0x4e, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, - 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, - 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x3d, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, - 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, - 0x49, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x10, 0xd7, 0xf2, 0xbb, 0x0b, 0x1a, 0x09, 0x82, 0x41, 0x06, - 0x49, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x12, 0x3d, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, + 0x4e, 0x10, 0x05, 0x1a, 0x08, 0x82, 0x41, 0x05, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x12, 0x39, 0x0a, + 0x2d, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, 0x59, + 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x06, + 0x1a, 0x06, 0x82, 0x41, 0x03, 0x55, 0x44, 0x50, 0x2a, 0x8e, 0x04, 0x0a, 0x20, 0x4f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, + 0x26, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, + 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x4e, 0x0a, 0x33, 0x4f, 0x50, 0x45, + 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, + 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x50, + 0x56, 0x34, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, + 0x10, 0x01, 0x1a, 0x15, 0x82, 0x41, 0x12, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x45, 0x58, 0x50, 0x4c, + 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x12, 0x42, 0x0a, 0x2d, 0x4f, 0x50, 0x45, + 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, + 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x52, 0x4f, + 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x10, 0x02, 0x1a, 0x0f, 0x82, 0x41, + 0x0c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x12, 0x4e, 0x0a, + 0x33, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, + 0x4d, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, + 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x03, 0x1a, 0x15, 0x82, 0x41, 0x12, 0x49, 0x50, 0x56, 0x36, 0x5f, + 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x12, 0x44, 0x0a, + 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, + 0x4d, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, + 0x04, 0x1a, 0x10, 0x82, 0x41, 0x0d, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, + 0x55, 0x4c, 0x4c, 0x12, 0x58, 0x0a, 0x38, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x4f, 0x50, 0x59, 0x5f, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x41, 0x54, 0x4f, 0x52, 0x10, + 0x08, 0x1a, 0x1a, 0x82, 0x41, 0x17, 0x45, 0x4e, 0x54, 0x52, 0x4f, 0x50, 0x59, 0x5f, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x41, 0x54, 0x4f, 0x52, 0x12, 0x3a, 0x0a, + 0x29, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, + 0x4d, 0x5f, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x09, 0x1a, 0x0b, 0x82, 0x41, + 0x08, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x2a, 0xe0, 0x05, 0x0a, 0x24, 0x4f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, + 0x4f, 0x4c, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, + 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x12, 0x3d, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, + 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x47, 0x52, + 0x45, 0x10, 0xd7, 0xf2, 0xbb, 0x0b, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, 0x50, 0x5f, 0x47, 0x52, + 0x45, 0x12, 0x3d, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, + 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x43, 0x50, + 0x10, 0x8a, 0xb2, 0xbb, 0x12, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, 0x50, 0x5f, 0x54, 0x43, 0x50, + 0x12, 0x3f, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, + 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x4c, 0x32, 0x54, 0x50, + 0x10, 0xb3, 0x82, 0x87, 0x27, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x4c, 0x32, 0x54, + 0x50, 0x12, 0x3f, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, + 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x55, 0x54, + 0x48, 0x10, 0xc7, 0xa9, 0x9d, 0x61, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x41, 0x55, + 0x54, 0x48, 0x12, 0x3e, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, + 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x49, + 0x4d, 0x10, 0xe5, 0xdf, 0x90, 0x82, 0x01, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, 0x50, 0x5f, 0x50, + 0x49, 0x4d, 0x12, 0x42, 0x0a, 0x2d, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, + 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, + 0x5f, 0x49, 0x50, 0x10, 0xc4, 0x83, 0xd5, 0x93, 0x01, 0x1a, 0x0b, 0x82, 0x41, 0x08, 0x49, 0x50, + 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x12, 0x40, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, - 0x50, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x8a, 0xb2, 0xbb, 0x12, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, - 0x50, 0x5f, 0x54, 0x43, 0x50, 0x12, 0x3f, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, - 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, - 0x5f, 0x4c, 0x32, 0x54, 0x50, 0x10, 0xb3, 0x82, 0x87, 0x27, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, - 0x50, 0x5f, 0x4c, 0x32, 0x54, 0x50, 0x12, 0x3f, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, - 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, - 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, - 0x50, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x10, 0xc7, 0xa9, 0x9d, 0x61, 0x1a, 0x0a, 0x82, 0x41, 0x07, - 0x49, 0x50, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x12, 0x3e, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, - 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, - 0x49, 0x50, 0x5f, 0x50, 0x49, 0x4d, 0x10, 0xe5, 0xdf, 0x90, 0x82, 0x01, 0x1a, 0x09, 0x82, 0x41, - 0x06, 0x49, 0x50, 0x5f, 0x50, 0x49, 0x4d, 0x12, 0x42, 0x0a, 0x2d, 0x4f, 0x50, 0x45, 0x4e, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, - 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, - 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x10, 0xc4, 0x83, 0xd5, 0x93, 0x01, 0x1a, 0x0b, - 0x82, 0x41, 0x08, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x12, 0x40, 0x0a, 0x2c, 0x4f, - 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, - 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, - 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x10, 0xfa, 0xcb, 0xa2, 0xf4, - 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x12, 0x40, 0x0a, - 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, - 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x10, 0xd6, 0xc0, - 0xc6, 0xf4, 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x12, - 0x3e, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x55, 0x44, 0x50, 0x10, 0xfa, - 0xc7, 0xb1, 0xfa, 0x01, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, 0x50, 0x5f, 0x55, 0x44, 0x50, 0x12, - 0x40, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x52, 0x53, 0x56, 0x50, 0x10, - 0xea, 0xf6, 0xe0, 0xfc, 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x52, 0x53, 0x56, - 0x50, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, - 0x61, 0x66, 0x74, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x50, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x10, 0xfa, 0xcb, 0xa2, 0xf4, 0x01, 0x1a, 0x0a, 0x82, 0x41, + 0x07, 0x49, 0x50, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x12, 0x40, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, + 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, + 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x10, 0xd6, 0xc0, 0xc6, 0xf4, 0x01, 0x1a, 0x0a, + 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x12, 0x3e, 0x0a, 0x2b, 0x4f, 0x50, + 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, + 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, + 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x55, 0x44, 0x50, 0x10, 0xfa, 0xc7, 0xb1, 0xfa, 0x01, 0x1a, + 0x09, 0x82, 0x41, 0x06, 0x49, 0x50, 0x5f, 0x55, 0x44, 0x50, 0x12, 0x40, 0x0a, 0x2c, 0x4f, 0x50, + 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, + 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, + 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x52, 0x53, 0x56, 0x50, 0x10, 0xea, 0xf6, 0xe0, 0xfc, 0x01, + 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x52, 0x53, 0x56, 0x50, 0x42, 0x36, 0x5a, 0x34, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2f, 0x65, + 0x6e, 0x75, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -359,7 +365,7 @@ func file_v1_proto_gribi_aft_enums_enums_proto_rawDescGZIP() []byte { } var file_v1_proto_gribi_aft_enums_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_v1_proto_gribi_aft_enums_enums_proto_goTypes = []interface{}{ +var file_v1_proto_gribi_aft_enums_enums_proto_goTypes = []any{ (OpenconfigAftTypesEncapsulationHeaderType)(0), // 0: gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType (OpenconfigMplsTypesMplsLabelEnum)(0), // 1: gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum (OpenconfigPacketMatchTypesIPPROTOCOL)(0), // 2: gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL diff --git a/v1/proto/gribi_aft/enums/enums.proto b/v1/proto/gribi_aft/enums/enums.proto index bab2906..0295795 100644 --- a/v1/proto/gribi_aft/enums/enums.proto +++ b/v1/proto/gribi_aft/enums/enums.proto @@ -22,6 +22,7 @@ enum OpenconfigAftTypesEncapsulationHeaderType { OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6 = 3 [(yext.yang_name) = "IPV6"]; OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS = 4 [(yext.yang_name) = "MPLS"]; OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN = 5 [(yext.yang_name) = "VXLAN"]; + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UDP = 6 [(yext.yang_name) = "UDP"]; } // OpenconfigMplsTypesMplsLabelEnum represents an enumerated type generated for the YANG enumerated type mpls-label. diff --git a/v1/proto/gribi_aft/gribi_aft.pb.go b/v1/proto/gribi_aft/gribi_aft.pb.go index e1fb8c5..a790a0f 100644 --- a/v1/proto/gribi_aft/gribi_aft.pb.go +++ b/v1/proto/gribi_aft/gribi_aft.pb.go @@ -9,8 +9,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 -// protoc v3.21.0--rc1 +// protoc-gen-go v1.35.1 +// protoc v5.28.2 // source: v1/proto/gribi_aft/gribi_aft.proto package gribi_aft @@ -42,11 +42,9 @@ type Device struct { func (x *Device) Reset() { *x = Device{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Device) String() string { @@ -57,7 +55,7 @@ func (*Device) ProtoMessage() {} func (x *Device) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -95,11 +93,9 @@ type Afts struct { func (x *Afts) Reset() { *x = Afts{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts) String() string { @@ -110,7 +106,7 @@ func (*Afts) ProtoMessage() {} func (x *Afts) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -187,11 +183,9 @@ type Afts_Ipv4Entry struct { func (x *Afts_Ipv4Entry) Reset() { *x = Afts_Ipv4Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_Ipv4Entry) String() string { @@ -202,7 +196,7 @@ func (*Afts_Ipv4Entry) ProtoMessage() {} func (x *Afts_Ipv4Entry) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -256,11 +250,9 @@ type Afts_Ipv4EntryKey struct { func (x *Afts_Ipv4EntryKey) Reset() { *x = Afts_Ipv4EntryKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_Ipv4EntryKey) String() string { @@ -271,7 +263,7 @@ func (*Afts_Ipv4EntryKey) ProtoMessage() {} func (x *Afts_Ipv4EntryKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -313,11 +305,9 @@ type Afts_Ipv6Entry struct { func (x *Afts_Ipv6Entry) Reset() { *x = Afts_Ipv6Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_Ipv6Entry) String() string { @@ -328,7 +318,7 @@ func (*Afts_Ipv6Entry) ProtoMessage() {} func (x *Afts_Ipv6Entry) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -382,11 +372,9 @@ type Afts_Ipv6EntryKey struct { func (x *Afts_Ipv6EntryKey) Reset() { *x = Afts_Ipv6EntryKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_Ipv6EntryKey) String() string { @@ -397,7 +385,7 @@ func (*Afts_Ipv6EntryKey) ProtoMessage() {} func (x *Afts_Ipv6EntryKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -439,11 +427,9 @@ type Afts_LabelEntry struct { func (x *Afts_LabelEntry) Reset() { *x = Afts_LabelEntry{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_LabelEntry) String() string { @@ -454,7 +440,7 @@ func (*Afts_LabelEntry) ProtoMessage() {} func (x *Afts_LabelEntry) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -503,6 +489,7 @@ type Afts_LabelEntryKey struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Label: + // // *Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum // *Afts_LabelEntryKey_LabelUint64 Label isAfts_LabelEntryKey_Label `protobuf_oneof:"label"` @@ -511,11 +498,9 @@ type Afts_LabelEntryKey struct { func (x *Afts_LabelEntryKey) Reset() { *x = Afts_LabelEntryKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_LabelEntryKey) String() string { @@ -526,7 +511,7 @@ func (*Afts_LabelEntryKey) ProtoMessage() {} func (x *Afts_LabelEntryKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -597,11 +582,9 @@ type Afts_MacEntry struct { func (x *Afts_MacEntry) Reset() { *x = Afts_MacEntry{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_MacEntry) String() string { @@ -612,7 +595,7 @@ func (*Afts_MacEntry) ProtoMessage() {} func (x *Afts_MacEntry) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -659,11 +642,9 @@ type Afts_MacEntryKey struct { func (x *Afts_MacEntryKey) Reset() { *x = Afts_MacEntryKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_MacEntryKey) String() string { @@ -674,7 +655,7 @@ func (*Afts_MacEntryKey) ProtoMessage() {} func (x *Afts_MacEntryKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -709,7 +690,9 @@ type Afts_NextHop struct { unknownFields protoimpl.UnknownFields DecapsulateHeader enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,104970793,opt,name=decapsulate_header,json=decapsulateHeader,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"decapsulate_header,omitempty"` + EncapHeader []*Afts_NextHop_EncapHeaderKey `protobuf:"bytes,125711186,rep,name=encap_header,json=encapHeader,proto3" json:"encap_header,omitempty"` EncapsulateHeader enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,69966061,opt,name=encapsulate_header,json=encapsulateHeader,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"encapsulate_header,omitempty"` + Gre *Afts_NextHop_Gre `protobuf:"bytes,45203444,opt,name=gre,proto3" json:"gre,omitempty"` InterfaceRef *Afts_NextHop_InterfaceRef `protobuf:"bytes,293682821,opt,name=interface_ref,json=interfaceRef,proto3" json:"interface_ref,omitempty"` IpAddress *ywrapper.StringValue `protobuf:"bytes,242108262,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` IpInIp *Afts_NextHop_IpInIp `protobuf:"bytes,157296597,opt,name=ip_in_ip,json=ipInIp,proto3" json:"ip_in_ip,omitempty"` @@ -723,11 +706,9 @@ type Afts_NextHop struct { func (x *Afts_NextHop) Reset() { *x = Afts_NextHop{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_NextHop) String() string { @@ -738,7 +719,7 @@ func (*Afts_NextHop) ProtoMessage() {} func (x *Afts_NextHop) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -760,6 +741,13 @@ func (x *Afts_NextHop) GetDecapsulateHeader() enums.OpenconfigAftTypesEncapsulat return enums.OpenconfigAftTypesEncapsulationHeaderType(0) } +func (x *Afts_NextHop) GetEncapHeader() []*Afts_NextHop_EncapHeaderKey { + if x != nil { + return x.EncapHeader + } + return nil +} + func (x *Afts_NextHop) GetEncapsulateHeader() enums.OpenconfigAftTypesEncapsulationHeaderType { if x != nil { return x.EncapsulateHeader @@ -767,6 +755,13 @@ func (x *Afts_NextHop) GetEncapsulateHeader() enums.OpenconfigAftTypesEncapsulat return enums.OpenconfigAftTypesEncapsulationHeaderType(0) } +func (x *Afts_NextHop) GetGre() *Afts_NextHop_Gre { + if x != nil { + return x.Gre + } + return nil +} + func (x *Afts_NextHop) GetInterfaceRef() *Afts_NextHop_InterfaceRef { if x != nil { return x.InterfaceRef @@ -842,11 +837,9 @@ type Afts_NextHopGroup struct { func (x *Afts_NextHopGroup) Reset() { *x = Afts_NextHopGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_NextHopGroup) String() string { @@ -857,7 +850,7 @@ func (*Afts_NextHopGroup) ProtoMessage() {} func (x *Afts_NextHopGroup) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -904,11 +897,9 @@ type Afts_NextHopGroupKey struct { func (x *Afts_NextHopGroupKey) Reset() { *x = Afts_NextHopGroupKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_NextHopGroupKey) String() string { @@ -919,7 +910,7 @@ func (*Afts_NextHopGroupKey) ProtoMessage() {} func (x *Afts_NextHopGroupKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -959,11 +950,9 @@ type Afts_NextHopKey struct { func (x *Afts_NextHopKey) Reset() { *x = Afts_NextHopKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_NextHopKey) String() string { @@ -974,7 +963,7 @@ func (*Afts_NextHopKey) ProtoMessage() {} func (x *Afts_NextHopKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1012,6 +1001,7 @@ type Afts_PolicyForwardingEntry struct { IpDscp *ywrapper.UintValue `protobuf:"bytes,350830798,opt,name=ip_dscp,json=ipDscp,proto3" json:"ip_dscp,omitempty"` IpPrefix *ywrapper.StringValue `protobuf:"bytes,66278688,opt,name=ip_prefix,json=ipPrefix,proto3" json:"ip_prefix,omitempty"` // Types that are assignable to IpProtocol: + // // *Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol // *Afts_PolicyForwardingEntry_IpProtocolUint64 IpProtocol isAfts_PolicyForwardingEntry_IpProtocol `protobuf_oneof:"ip_protocol"` @@ -1019,6 +1009,7 @@ type Afts_PolicyForwardingEntry struct { L4SrcPort *ywrapper.UintValue `protobuf:"bytes,502173263,opt,name=l4_src_port,json=l4SrcPort,proto3" json:"l4_src_port,omitempty"` MacAddress *ywrapper.StringValue `protobuf:"bytes,422272134,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` // Types that are assignable to MplsLabel: + // // *Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum // *Afts_PolicyForwardingEntry_MplsLabelUint64 MplsLabel isAfts_PolicyForwardingEntry_MplsLabel `protobuf_oneof:"mpls_label"` @@ -1029,11 +1020,9 @@ type Afts_PolicyForwardingEntry struct { func (x *Afts_PolicyForwardingEntry) Reset() { *x = Afts_PolicyForwardingEntry{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_PolicyForwardingEntry) String() string { @@ -1044,7 +1033,7 @@ func (*Afts_PolicyForwardingEntry) ProtoMessage() {} func (x *Afts_PolicyForwardingEntry) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1209,11 +1198,9 @@ type Afts_PolicyForwardingEntryKey struct { func (x *Afts_PolicyForwardingEntryKey) Reset() { *x = Afts_PolicyForwardingEntryKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_PolicyForwardingEntryKey) String() string { @@ -1224,7 +1211,7 @@ func (*Afts_PolicyForwardingEntryKey) ProtoMessage() {} func (x *Afts_PolicyForwardingEntryKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1264,11 +1251,9 @@ type Afts_LabelEntry_PoppedMplsLabelStackUnion struct { func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) Reset() { *x = Afts_LabelEntry_PoppedMplsLabelStackUnion{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) String() string { @@ -1279,7 +1264,7 @@ func (*Afts_LabelEntry_PoppedMplsLabelStackUnion) ProtoMessage() {} func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1308,33 +1293,36 @@ func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) GetPoppedMplsLabelStackUint6 return 0 } -type Afts_NextHop_InterfaceRef struct { +type Afts_NextHop_EncapHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Interface *ywrapper.StringValue `protobuf:"bytes,366751031,opt,name=interface,proto3" json:"interface,omitempty"` - Subinterface *ywrapper.UintValue `protobuf:"bytes,488145333,opt,name=subinterface,proto3" json:"subinterface,omitempty"` + Gre *Afts_NextHop_EncapHeader_Gre `protobuf:"bytes,301373623,opt,name=gre,proto3" json:"gre,omitempty"` + Ipv4 *Afts_NextHop_EncapHeader_Ipv4 `protobuf:"bytes,191386200,opt,name=ipv4,proto3" json:"ipv4,omitempty"` + Ipv6 *Afts_NextHop_EncapHeader_Ipv6 `protobuf:"bytes,191386202,opt,name=ipv6,proto3" json:"ipv6,omitempty"` + Mpls *Afts_NextHop_EncapHeader_Mpls `protobuf:"bytes,393605309,opt,name=mpls,proto3" json:"mpls,omitempty"` + Type enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,254997883,opt,name=type,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"type,omitempty"` + UdpV4 *Afts_NextHop_EncapHeader_UdpV4 `protobuf:"bytes,171499561,opt,name=udp_v4,json=udpV4,proto3" json:"udp_v4,omitempty"` + UdpV6 *Afts_NextHop_EncapHeader_UdpV6 `protobuf:"bytes,171499563,opt,name=udp_v6,json=udpV6,proto3" json:"udp_v6,omitempty"` } -func (x *Afts_NextHop_InterfaceRef) Reset() { - *x = Afts_NextHop_InterfaceRef{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *Afts_NextHop_EncapHeader) Reset() { + *x = Afts_NextHop_EncapHeader{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Afts_NextHop_InterfaceRef) String() string { +func (x *Afts_NextHop_EncapHeader) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Afts_NextHop_InterfaceRef) ProtoMessage() {} +func (*Afts_NextHop_EncapHeader) ProtoMessage() {} -func (x *Afts_NextHop_InterfaceRef) ProtoReflect() protoreflect.Message { +func (x *Afts_NextHop_EncapHeader) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1344,52 +1332,85 @@ func (x *Afts_NextHop_InterfaceRef) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Afts_NextHop_InterfaceRef.ProtoReflect.Descriptor instead. -func (*Afts_NextHop_InterfaceRef) Descriptor() ([]byte, []int) { +// Deprecated: Use Afts_NextHop_EncapHeader.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader) Descriptor() ([]byte, []int) { return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0} } -func (x *Afts_NextHop_InterfaceRef) GetInterface() *ywrapper.StringValue { +func (x *Afts_NextHop_EncapHeader) GetGre() *Afts_NextHop_EncapHeader_Gre { if x != nil { - return x.Interface + return x.Gre } return nil } -func (x *Afts_NextHop_InterfaceRef) GetSubinterface() *ywrapper.UintValue { +func (x *Afts_NextHop_EncapHeader) GetIpv4() *Afts_NextHop_EncapHeader_Ipv4 { if x != nil { - return x.Subinterface + return x.Ipv4 } return nil } -type Afts_NextHop_IpInIp struct { +func (x *Afts_NextHop_EncapHeader) GetIpv6() *Afts_NextHop_EncapHeader_Ipv6 { + if x != nil { + return x.Ipv6 + } + return nil +} + +func (x *Afts_NextHop_EncapHeader) GetMpls() *Afts_NextHop_EncapHeader_Mpls { + if x != nil { + return x.Mpls + } + return nil +} + +func (x *Afts_NextHop_EncapHeader) GetType() enums.OpenconfigAftTypesEncapsulationHeaderType { + if x != nil { + return x.Type + } + return enums.OpenconfigAftTypesEncapsulationHeaderType(0) +} + +func (x *Afts_NextHop_EncapHeader) GetUdpV4() *Afts_NextHop_EncapHeader_UdpV4 { + if x != nil { + return x.UdpV4 + } + return nil +} + +func (x *Afts_NextHop_EncapHeader) GetUdpV6() *Afts_NextHop_EncapHeader_UdpV6 { + if x != nil { + return x.UdpV6 + } + return nil +} + +type Afts_NextHop_EncapHeaderKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DstIp *ywrapper.StringValue `protobuf:"bytes,184775743,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` - SrcIp *ywrapper.StringValue `protobuf:"bytes,220560118,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + EncapHeader *Afts_NextHop_EncapHeader `protobuf:"bytes,2,opt,name=encap_header,json=encapHeader,proto3" json:"encap_header,omitempty"` } -func (x *Afts_NextHop_IpInIp) Reset() { - *x = Afts_NextHop_IpInIp{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *Afts_NextHop_EncapHeaderKey) Reset() { + *x = Afts_NextHop_EncapHeaderKey{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Afts_NextHop_IpInIp) String() string { +func (x *Afts_NextHop_EncapHeaderKey) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Afts_NextHop_IpInIp) ProtoMessage() {} +func (*Afts_NextHop_EncapHeaderKey) ProtoMessage() {} -func (x *Afts_NextHop_IpInIp) ProtoReflect() protoreflect.Message { +func (x *Afts_NextHop_EncapHeaderKey) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1399,52 +1420,51 @@ func (x *Afts_NextHop_IpInIp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Afts_NextHop_IpInIp.ProtoReflect.Descriptor instead. -func (*Afts_NextHop_IpInIp) Descriptor() ([]byte, []int) { +// Deprecated: Use Afts_NextHop_EncapHeaderKey.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeaderKey) Descriptor() ([]byte, []int) { return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 1} } -func (x *Afts_NextHop_IpInIp) GetDstIp() *ywrapper.StringValue { +func (x *Afts_NextHop_EncapHeaderKey) GetIndex() uint64 { if x != nil { - return x.DstIp + return x.Index } - return nil + return 0 } -func (x *Afts_NextHop_IpInIp) GetSrcIp() *ywrapper.StringValue { +func (x *Afts_NextHop_EncapHeaderKey) GetEncapHeader() *Afts_NextHop_EncapHeader { if x != nil { - return x.SrcIp + return x.EncapHeader } return nil } -type Afts_NextHop_PushedMplsLabelStackUnion struct { +type Afts_NextHop_Gre struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PushedMplsLabelStackOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,307755077,opt,name=pushed_mpls_label_stack_openconfigmplstypesmplslabelenum,json=pushedMplsLabelStackOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum" json:"pushed_mpls_label_stack_openconfigmplstypesmplslabelenum,omitempty"` - PushedMplsLabelStackUint64 uint64 `protobuf:"varint,47493573,opt,name=pushed_mpls_label_stack_uint64,json=pushedMplsLabelStackUint64,proto3" json:"pushed_mpls_label_stack_uint64,omitempty"` + DstIp *ywrapper.StringValue `protobuf:"bytes,434950232,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,440591545,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` + Ttl *ywrapper.UintValue `protobuf:"bytes,108564691,opt,name=ttl,proto3" json:"ttl,omitempty"` } -func (x *Afts_NextHop_PushedMplsLabelStackUnion) Reset() { - *x = Afts_NextHop_PushedMplsLabelStackUnion{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *Afts_NextHop_Gre) Reset() { + *x = Afts_NextHop_Gre{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Afts_NextHop_PushedMplsLabelStackUnion) String() string { +func (x *Afts_NextHop_Gre) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Afts_NextHop_PushedMplsLabelStackUnion) ProtoMessage() {} +func (*Afts_NextHop_Gre) ProtoMessage() {} -func (x *Afts_NextHop_PushedMplsLabelStackUnion) ProtoReflect() protoreflect.Message { +func (x *Afts_NextHop_Gre) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1454,51 +1474,57 @@ func (x *Afts_NextHop_PushedMplsLabelStackUnion) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use Afts_NextHop_PushedMplsLabelStackUnion.ProtoReflect.Descriptor instead. -func (*Afts_NextHop_PushedMplsLabelStackUnion) Descriptor() ([]byte, []int) { +// Deprecated: Use Afts_NextHop_Gre.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_Gre) Descriptor() ([]byte, []int) { return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 2} } -func (x *Afts_NextHop_PushedMplsLabelStackUnion) GetPushedMplsLabelStackOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { +func (x *Afts_NextHop_Gre) GetDstIp() *ywrapper.StringValue { if x != nil { - return x.PushedMplsLabelStackOpenconfigmplstypesmplslabelenum + return x.DstIp } - return enums.OpenconfigMplsTypesMplsLabelEnum(0) + return nil } -func (x *Afts_NextHop_PushedMplsLabelStackUnion) GetPushedMplsLabelStackUint64() uint64 { +func (x *Afts_NextHop_Gre) GetSrcIp() *ywrapper.StringValue { if x != nil { - return x.PushedMplsLabelStackUint64 + return x.SrcIp } - return 0 + return nil } -type Afts_NextHopGroup_NextHop struct { +func (x *Afts_NextHop_Gre) GetTtl() *ywrapper.UintValue { + if x != nil { + return x.Ttl + } + return nil +} + +type Afts_NextHop_InterfaceRef struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Weight *ywrapper.UintValue `protobuf:"bytes,202140175,opt,name=weight,proto3" json:"weight,omitempty"` + Interface *ywrapper.StringValue `protobuf:"bytes,366751031,opt,name=interface,proto3" json:"interface,omitempty"` + Subinterface *ywrapper.UintValue `protobuf:"bytes,488145333,opt,name=subinterface,proto3" json:"subinterface,omitempty"` } -func (x *Afts_NextHopGroup_NextHop) Reset() { - *x = Afts_NextHopGroup_NextHop{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *Afts_NextHop_InterfaceRef) Reset() { + *x = Afts_NextHop_InterfaceRef{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Afts_NextHopGroup_NextHop) String() string { +func (x *Afts_NextHop_InterfaceRef) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Afts_NextHopGroup_NextHop) ProtoMessage() {} +func (*Afts_NextHop_InterfaceRef) ProtoMessage() {} -func (x *Afts_NextHopGroup_NextHop) ProtoReflect() protoreflect.Message { +func (x *Afts_NextHop_InterfaceRef) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1508,45 +1534,50 @@ func (x *Afts_NextHopGroup_NextHop) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Afts_NextHopGroup_NextHop.ProtoReflect.Descriptor instead. -func (*Afts_NextHopGroup_NextHop) Descriptor() ([]byte, []int) { - return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9, 0} +// Deprecated: Use Afts_NextHop_InterfaceRef.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_InterfaceRef) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 3} } -func (x *Afts_NextHopGroup_NextHop) GetWeight() *ywrapper.UintValue { +func (x *Afts_NextHop_InterfaceRef) GetInterface() *ywrapper.StringValue { if x != nil { - return x.Weight + return x.Interface } return nil } -type Afts_NextHopGroup_NextHopKey struct { +func (x *Afts_NextHop_InterfaceRef) GetSubinterface() *ywrapper.UintValue { + if x != nil { + return x.Subinterface + } + return nil +} + +type Afts_NextHop_IpInIp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` - NextHop *Afts_NextHopGroup_NextHop `protobuf:"bytes,2,opt,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` + DstIp *ywrapper.StringValue `protobuf:"bytes,184775743,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,220560118,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` } -func (x *Afts_NextHopGroup_NextHopKey) Reset() { - *x = Afts_NextHopGroup_NextHopKey{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *Afts_NextHop_IpInIp) Reset() { + *x = Afts_NextHop_IpInIp{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Afts_NextHopGroup_NextHopKey) String() string { +func (x *Afts_NextHop_IpInIp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Afts_NextHopGroup_NextHopKey) ProtoMessage() {} +func (*Afts_NextHop_IpInIp) ProtoMessage() {} -func (x *Afts_NextHopGroup_NextHopKey) ProtoReflect() protoreflect.Message { +func (x *Afts_NextHop_IpInIp) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1556,44 +1587,638 @@ func (x *Afts_NextHopGroup_NextHopKey) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Afts_NextHopGroup_NextHopKey.ProtoReflect.Descriptor instead. -func (*Afts_NextHopGroup_NextHopKey) Descriptor() ([]byte, []int) { - return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9, 1} +// Deprecated: Use Afts_NextHop_IpInIp.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_IpInIp) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 4} } -func (x *Afts_NextHopGroup_NextHopKey) GetIndex() uint64 { +func (x *Afts_NextHop_IpInIp) GetDstIp() *ywrapper.StringValue { if x != nil { - return x.Index + return x.DstIp } - return 0 + return nil } -func (x *Afts_NextHopGroup_NextHopKey) GetNextHop() *Afts_NextHopGroup_NextHop { +func (x *Afts_NextHop_IpInIp) GetSrcIp() *ywrapper.StringValue { if x != nil { - return x.NextHop + return x.SrcIp } return nil } -var File_v1_proto_gribi_aft_gribi_aft_proto protoreflect.FileDescriptor +type Afts_NextHop_PushedMplsLabelStackUnion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = []byte{ - 0x0a, 0x22, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, - 0x5f, 0x61, 0x66, 0x74, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x1a, - 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, + PushedMplsLabelStackOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,307755077,opt,name=pushed_mpls_label_stack_openconfigmplstypesmplslabelenum,json=pushedMplsLabelStackOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum" json:"pushed_mpls_label_stack_openconfigmplstypesmplslabelenum,omitempty"` + PushedMplsLabelStackUint64 uint64 `protobuf:"varint,47493573,opt,name=pushed_mpls_label_stack_uint64,json=pushedMplsLabelStackUint64,proto3" json:"pushed_mpls_label_stack_uint64,omitempty"` +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) Reset() { + *x = Afts_NextHop_PushedMplsLabelStackUnion{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_PushedMplsLabelStackUnion) ProtoMessage() {} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_PushedMplsLabelStackUnion.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_PushedMplsLabelStackUnion) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 5} +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) GetPushedMplsLabelStackOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { + if x != nil { + return x.PushedMplsLabelStackOpenconfigmplstypesmplslabelenum + } + return enums.OpenconfigMplsTypesMplsLabelEnum(0) +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) GetPushedMplsLabelStackUint64() uint64 { + if x != nil { + return x.PushedMplsLabelStackUint64 + } + return 0 +} + +type Afts_NextHop_EncapHeader_Gre struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DstIp *ywrapper.StringValue `protobuf:"bytes,330920437,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,509569356,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` + Ttl *ywrapper.UintValue `protobuf:"bytes,267157040,opt,name=ttl,proto3" json:"ttl,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_Gre) Reset() { + *x = Afts_NextHop_EncapHeader_Gre{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_Gre) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_Gre) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_Gre) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_Gre.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_Gre) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 0} +} + +func (x *Afts_NextHop_EncapHeader_Gre) GetDstIp() *ywrapper.StringValue { + if x != nil { + return x.DstIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_Gre) GetSrcIp() *ywrapper.StringValue { + if x != nil { + return x.SrcIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_Gre) GetTtl() *ywrapper.UintValue { + if x != nil { + return x.Ttl + } + return nil +} + +type Afts_NextHop_EncapHeader_Ipv4 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DstIp *ywrapper.StringValue `protobuf:"bytes,403354420,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,293130725,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_Ipv4) Reset() { + *x = Afts_NextHop_EncapHeader_Ipv4{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_Ipv4) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_Ipv4) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_Ipv4) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_Ipv4.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_Ipv4) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 1} +} + +func (x *Afts_NextHop_EncapHeader_Ipv4) GetDstIp() *ywrapper.StringValue { + if x != nil { + return x.DstIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_Ipv4) GetSrcIp() *ywrapper.StringValue { + if x != nil { + return x.SrcIp + } + return nil +} + +type Afts_NextHop_EncapHeader_Ipv6 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DstIp *ywrapper.StringValue `protobuf:"bytes,469869578,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,254664891,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_Ipv6) Reset() { + *x = Afts_NextHop_EncapHeader_Ipv6{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_Ipv6) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_Ipv6) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_Ipv6) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_Ipv6.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_Ipv6) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 2} +} + +func (x *Afts_NextHop_EncapHeader_Ipv6) GetDstIp() *ywrapper.StringValue { + if x != nil { + return x.DstIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_Ipv6) GetSrcIp() *ywrapper.StringValue { + if x != nil { + return x.SrcIp + } + return nil +} + +type Afts_NextHop_EncapHeader_Mpls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MplsLabelStack []*Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion `protobuf:"bytes,310218456,rep,name=mpls_label_stack,json=mplsLabelStack,proto3" json:"mpls_label_stack,omitempty"` + TrafficClass *ywrapper.UintValue `protobuf:"bytes,380564126,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_Mpls) Reset() { + *x = Afts_NextHop_EncapHeader_Mpls{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_Mpls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_Mpls) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_Mpls) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_Mpls.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_Mpls) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 3} +} + +func (x *Afts_NextHop_EncapHeader_Mpls) GetMplsLabelStack() []*Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion { + if x != nil { + return x.MplsLabelStack + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_Mpls) GetTrafficClass() *ywrapper.UintValue { + if x != nil { + return x.TrafficClass + } + return nil +} + +type Afts_NextHop_EncapHeader_UdpV4 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dscp *ywrapper.UintValue `protobuf:"bytes,404304264,opt,name=dscp,proto3" json:"dscp,omitempty"` + DstIp *ywrapper.StringValue `protobuf:"bytes,425782075,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + DstUdpPort *ywrapper.UintValue `protobuf:"bytes,26930775,opt,name=dst_udp_port,json=dstUdpPort,proto3" json:"dst_udp_port,omitempty"` + IpTtl *ywrapper.UintValue `protobuf:"bytes,489501006,opt,name=ip_ttl,json=ipTtl,proto3" json:"ip_ttl,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,223532242,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` + SrcUdpPort *ywrapper.UintValue `protobuf:"bytes,332943154,opt,name=src_udp_port,json=srcUdpPort,proto3" json:"src_udp_port,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) Reset() { + *x = Afts_NextHop_EncapHeader_UdpV4{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_UdpV4) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_UdpV4) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_UdpV4.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_UdpV4) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 4} +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) GetDscp() *ywrapper.UintValue { + if x != nil { + return x.Dscp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) GetDstIp() *ywrapper.StringValue { + if x != nil { + return x.DstIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) GetDstUdpPort() *ywrapper.UintValue { + if x != nil { + return x.DstUdpPort + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) GetIpTtl() *ywrapper.UintValue { + if x != nil { + return x.IpTtl + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) GetSrcIp() *ywrapper.StringValue { + if x != nil { + return x.SrcIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV4) GetSrcUdpPort() *ywrapper.UintValue { + if x != nil { + return x.SrcUdpPort + } + return nil +} + +type Afts_NextHop_EncapHeader_UdpV6 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dscp *ywrapper.UintValue `protobuf:"bytes,493128346,opt,name=dscp,proto3" json:"dscp,omitempty"` + DstIp *ywrapper.StringValue `protobuf:"bytes,148029921,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + DstUdpPort *ywrapper.UintValue `protobuf:"bytes,275733981,opt,name=dst_udp_port,json=dstUdpPort,proto3" json:"dst_udp_port,omitempty"` + IpTtl *ywrapper.UintValue `protobuf:"bytes,394480800,opt,name=ip_ttl,json=ipTtl,proto3" json:"ip_ttl,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,494881688,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` + SrcUdpPort *ywrapper.UintValue `protobuf:"bytes,485812424,opt,name=src_udp_port,json=srcUdpPort,proto3" json:"src_udp_port,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) Reset() { + *x = Afts_NextHop_EncapHeader_UdpV6{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_UdpV6) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_UdpV6) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_UdpV6.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_UdpV6) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 5} +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) GetDscp() *ywrapper.UintValue { + if x != nil { + return x.Dscp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) GetDstIp() *ywrapper.StringValue { + if x != nil { + return x.DstIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) GetDstUdpPort() *ywrapper.UintValue { + if x != nil { + return x.DstUdpPort + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) GetIpTtl() *ywrapper.UintValue { + if x != nil { + return x.IpTtl + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) GetSrcIp() *ywrapper.StringValue { + if x != nil { + return x.SrcIp + } + return nil +} + +func (x *Afts_NextHop_EncapHeader_UdpV6) GetSrcUdpPort() *ywrapper.UintValue { + if x != nil { + return x.SrcUdpPort + } + return nil +} + +type Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MplsLabelStackOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,212167609,opt,name=mpls_label_stack_openconfigmplstypesmplslabelenum,json=mplsLabelStackOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum" json:"mpls_label_stack_openconfigmplstypesmplslabelenum,omitempty"` + MplsLabelStackUint64 uint64 `protobuf:"varint,205621201,opt,name=mpls_label_stack_uint64,json=mplsLabelStackUint64,proto3" json:"mpls_label_stack_uint64,omitempty"` +} + +func (x *Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) Reset() { + *x = Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) ProtoMessage() {} + +func (x *Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0, 3, 0} +} + +func (x *Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) GetMplsLabelStackOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { + if x != nil { + return x.MplsLabelStackOpenconfigmplstypesmplslabelenum + } + return enums.OpenconfigMplsTypesMplsLabelEnum(0) +} + +func (x *Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion) GetMplsLabelStackUint64() uint64 { + if x != nil { + return x.MplsLabelStackUint64 + } + return 0 +} + +type Afts_NextHopGroup_NextHop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Weight *ywrapper.UintValue `protobuf:"bytes,202140175,opt,name=weight,proto3" json:"weight,omitempty"` +} + +func (x *Afts_NextHopGroup_NextHop) Reset() { + *x = Afts_NextHopGroup_NextHop{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHopGroup_NextHop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopGroup_NextHop) ProtoMessage() {} + +func (x *Afts_NextHopGroup_NextHop) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopGroup_NextHop.ProtoReflect.Descriptor instead. +func (*Afts_NextHopGroup_NextHop) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9, 0} +} + +func (x *Afts_NextHopGroup_NextHop) GetWeight() *ywrapper.UintValue { + if x != nil { + return x.Weight + } + return nil +} + +type Afts_NextHopGroup_NextHopKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + NextHop *Afts_NextHopGroup_NextHop `protobuf:"bytes,2,opt,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` +} + +func (x *Afts_NextHopGroup_NextHopKey) Reset() { + *x = Afts_NextHopGroup_NextHopKey{} + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Afts_NextHopGroup_NextHopKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopGroup_NextHopKey) ProtoMessage() {} + +func (x *Afts_NextHopGroup_NextHopKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopGroup_NextHopKey.ProtoReflect.Descriptor instead. +func (*Afts_NextHopGroup_NextHopKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9, 1} +} + +func (x *Afts_NextHopGroup_NextHopKey) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *Afts_NextHopGroup_NextHopKey) GetNextHop() *Afts_NextHopGroup_NextHop { + if x != nil { + return x.NextHop + } + return nil +} + +var File_v1_proto_gribi_aft_gribi_aft_proto protoreflect.FileDescriptor + +var file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, + 0x5f, 0x61, 0x66, 0x74, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x1a, + 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x61, 0x66, 0x74, 0x73, 0x18, 0xb4, 0x96, 0x94, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x42, 0x08, 0x82, - 0x41, 0x05, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x52, 0x04, 0x61, 0x66, 0x74, 0x73, 0x22, 0x97, 0x4d, + 0x41, 0x05, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x52, 0x04, 0x61, 0x66, 0x74, 0x73, 0x22, 0xb5, 0x73, 0x0a, 0x04, 0x41, 0x66, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x0a, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xd7, 0xd7, 0xd8, 0xc3, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, @@ -1768,10 +2393,10 @@ var file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = []byte{ 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, - 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3a, 0xe0, 0x49, 0x01, 0x82, 0x41, 0x34, 0x2f, 0x61, 0x66, 0x74, - 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x2d, - 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3a, 0x82, 0x41, 0x34, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, + 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x2d, 0x6d, 0x70, 0x6c, + 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0xe0, 0x49, 0x01, 0x52, 0x14, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x1a, 0x85, 0x03, 0x0a, 0x19, 0x50, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, @@ -1860,7 +2485,7 @@ var file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = []byte{ 0x73, 0x12, 0x35, 0x0a, 0x09, 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0xde, 0x11, 0x0a, 0x07, 0x4e, 0x65, 0x78, + 0x6d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0xfc, 0x37, 0x0a, 0x07, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0xa9, 0xf4, 0x86, 0x32, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, @@ -1871,351 +2496,656 @@ var file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = []byte{ 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, - 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0xed, 0xb1, 0xae, 0x21, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, - 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, - 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x34, 0x82, 0x41, 0x31, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x84, 0x01, 0x0a, 0x0c, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0xd2, 0xe6, 0xf8, 0x3b, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, + 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, + 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x36, 0x82, 0x41, 0x33, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0xed, 0xb1, 0xae, 0x21, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x34, 0x82, 0x41, + 0x31, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x52, 0x11, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x03, 0x67, 0x72, 0x65, 0x18, 0xf4, 0xff, 0xc6, + 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x47, + 0x72, 0x65, 0x42, 0x1f, 0x82, 0x41, 0x1c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, + 0x67, 0x72, 0x65, 0x52, 0x03, 0x67, 0x72, 0x65, 0x12, 0x78, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x85, 0xfd, 0x84, 0x8c, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, + 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, 0x29, 0x82, 0x41, 0x26, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2d, 0x72, 0x65, 0x66, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x66, 0x12, 0x65, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0xe6, 0x8e, 0xb9, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x2c, 0x82, 0x41, 0x29, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, + 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x61, 0x0a, 0x08, 0x69, 0x70, 0x5f, + 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x18, 0xd5, 0xcf, 0x80, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x49, 0x70, 0x49, 0x6e, 0x49, 0x70, 0x42, 0x24, + 0x82, 0x41, 0x21, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x70, 0x2d, 0x69, + 0x6e, 0x2d, 0x69, 0x70, 0x52, 0x06, 0x69, 0x70, 0x49, 0x6e, 0x49, 0x70, 0x12, 0x69, 0x0a, 0x0b, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0xa8, 0xb1, 0xf7, 0xc0, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2d, 0x82, 0x41, + 0x2a, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x6d, 0x61, 0x63, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x8c, 0x85, 0xe8, 0x6e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x32, 0x82, 0x41, 0x2f, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x6c, 0x0a, 0x0d, 0x70, 0x6f, 0x70, 0x5f, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x18, 0xac, 0x91, 0x9e, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x2f, 0x82, 0x41, 0x2c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x2d, 0x74, 0x6f, 0x70, 0x2d, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x52, 0x0b, 0x70, 0x6f, 0x70, 0x54, 0x6f, 0x70, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xaa, + 0x01, 0x0a, 0x17, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0xd4, 0xae, 0xba, 0xe9, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, + 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x50, 0x75, + 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, + 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3c, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, + 0x64, 0x2d, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0xe0, 0x49, 0x01, 0x52, 0x14, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, + 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x84, 0x01, 0x0a, 0x15, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0xa2, 0x8f, 0x8c, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x37, 0x82, 0x41, 0x34, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, - 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, - 0x6c, 0x61, 0x74, 0x65, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x65, 0x6e, 0x63, - 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x78, - 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, - 0x85, 0xfd, 0x84, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x69, 0x62, - 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, - 0x6f, 0x70, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, - 0x29, 0x82, 0x41, 0x26, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, - 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x72, 0x65, 0x66, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x65, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0xe6, 0x8e, 0xb9, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x2d, + 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x12, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x60, 0x0a, 0x09, 0x76, 0x6e, 0x69, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, + 0xca, 0xa6, 0x8d, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2b, 0x82, + 0x41, 0x28, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x76, 0x6e, 0x69, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x08, 0x76, 0x6e, 0x69, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x1a, 0xb4, 0x20, 0x0a, 0x0b, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x12, 0x79, 0x0a, 0x03, 0x67, 0x72, 0x65, 0x18, 0xb7, 0xb1, 0xda, 0x8f, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, + 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x65, 0x42, 0x3a, + 0x82, 0x41, 0x37, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x65, 0x52, 0x03, 0x67, 0x72, 0x65, 0x12, + 0x7c, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0xd8, 0xa4, 0xa1, 0x5b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, + 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x49, 0x70, 0x76, 0x34, 0x42, 0x3b, 0x82, 0x41, 0x38, 0x2f, + 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x7c, 0x0a, + 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0xda, 0xa4, 0xa1, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x2e, 0x49, 0x70, 0x76, 0x36, 0x42, 0x3b, 0x82, 0x41, 0x38, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2f, 0x69, 0x70, 0x76, 0x36, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, 0x12, 0x7d, 0x0a, 0x04, 0x6d, + 0x70, 0x6c, 0x73, 0x18, 0xbd, 0xe1, 0xd7, 0xbb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, + 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x2e, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x3b, 0x82, 0x41, 0x38, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, + 0x6d, 0x70, 0x6c, 0x73, 0x52, 0x04, 0x6d, 0x70, 0x6c, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0xfb, 0xea, 0xcb, 0x79, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, + 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x41, 0x82, 0x41, 0x3e, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x82, 0x01, 0x0a, 0x06, 0x75, 0x64, 0x70, 0x5f, 0x76, 0x34, 0x18, 0xa9, 0xc0, 0xe3, + 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, + 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x55, 0x64, 0x70, 0x56, 0x34, + 0x42, 0x3d, 0x82, 0x41, 0x3a, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x34, 0x52, + 0x05, 0x75, 0x64, 0x70, 0x56, 0x34, 0x12, 0x82, 0x01, 0x0a, 0x06, 0x75, 0x64, 0x70, 0x5f, 0x76, + 0x36, 0x18, 0xab, 0xc0, 0xe3, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x69, + 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, + 0x55, 0x64, 0x70, 0x56, 0x36, 0x42, 0x3d, 0x82, 0x41, 0x3a, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, + 0x70, 0x2d, 0x76, 0x36, 0x52, 0x05, 0x75, 0x64, 0x70, 0x56, 0x36, 0x1a, 0xeb, 0x02, 0x0a, 0x03, + 0x47, 0x72, 0x65, 0x12, 0x79, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0xf5, 0xe3, + 0xe5, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, + 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x79, + 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0xcc, 0xd2, 0xfd, 0xf2, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2f, 0x67, 0x72, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x72, 0x63, 0x2d, + 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, 0x6e, 0x0a, 0x03, 0x74, 0x74, 0x6c, + 0x18, 0xb0, 0xfc, 0xb1, 0x7f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x44, + 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x74, 0x74, 0x6c, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x1a, 0xfe, 0x01, 0x0a, 0x04, 0x49, 0x70, + 0x76, 0x34, 0x12, 0x7a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0xb4, 0xe6, 0xaa, + 0xc0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x48, 0x82, + 0x41, 0x45, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, + 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x7a, + 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0xe5, 0xa3, 0xe3, 0x8b, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x48, 0x82, 0x41, 0x45, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x72, 0x63, + 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x1a, 0xfd, 0x01, 0x0a, 0x04, 0x49, + 0x70, 0x76, 0x36, 0x12, 0x7a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x8a, 0xc8, + 0x86, 0xe0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x48, + 0x82, 0x41, 0x45, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, + 0x79, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0xbb, 0xc1, 0xb7, 0x79, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x48, 0x82, 0x41, 0x45, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x72, 0x63, + 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x1a, 0xf7, 0x05, 0x0a, 0x04, 0x4d, + 0x70, 0x6c, 0x73, 0x12, 0xc1, 0x01, 0x0a, 0x10, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0xd8, 0x9d, 0xf6, 0x93, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, + 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x61, + 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x4d, 0x70, 0x6c, 0x73, 0x2e, 0x4d, 0x70, 0x6c, + 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, + 0x42, 0x55, 0x82, 0x41, 0x4f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0xe0, 0x49, 0x01, 0x52, 0x0e, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x9e, 0xe5, 0xbb, 0xb5, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4f, 0x82, 0x41, 0x4c, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x2d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, + 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x9a, 0x03, 0x0a, 0x13, 0x4d, 0x70, 0x6c, 0x73, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, + 0xf3, 0x01, 0x0a, 0x31, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, + 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xb9, 0xd7, 0x95, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, + 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, + 0x6d, 0x42, 0x52, 0x82, 0x41, 0x4f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, + 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, + 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x2e, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, + 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x18, 0xd1, 0x8f, 0x86, 0x62, 0x20, 0x01, 0x28, 0x04, 0x42, 0x52, 0x82, 0x41, 0x4f, 0x2f, + 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, + 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x14, + 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x1a, 0x90, 0x06, 0x0a, 0x05, 0x55, 0x64, 0x70, 0x56, 0x34, 0x12, 0x75, + 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x18, 0x88, 0xe3, 0xe4, 0xc0, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x48, 0x82, 0x41, 0x45, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, + 0x70, 0x2d, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x63, 0x70, 0x52, + 0x04, 0x64, 0x73, 0x63, 0x70, 0x12, 0x7c, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, + 0xbb, 0xd6, 0x83, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x4a, 0x82, 0x41, 0x47, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x34, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, + 0x74, 0x49, 0x70, 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x64, 0x70, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0xd7, 0xdc, 0xeb, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x50, 0x82, 0x41, 0x4d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, + 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x75, 0x64, 0x70, 0x2d, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0a, 0x64, 0x73, 0x74, 0x55, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, + 0x12, 0x7a, 0x0a, 0x06, 0x69, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0xce, 0xe2, 0xb4, 0xe9, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4a, 0x82, 0x41, 0x47, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, + 0x70, 0x2d, 0x74, 0x74, 0x6c, 0x52, 0x05, 0x69, 0x70, 0x54, 0x74, 0x6c, 0x12, 0x7b, 0x0a, 0x06, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0xd2, 0xa9, 0xcb, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2c, 0x82, 0x41, 0x29, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4a, 0x82, 0x41, 0x47, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, - 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x61, 0x0a, 0x08, 0x69, 0x70, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x18, 0xd5, 0xcf, 0x80, 0x4b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, - 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x49, 0x70, - 0x49, 0x6e, 0x49, 0x70, 0x42, 0x24, 0x82, 0x41, 0x21, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, - 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, - 0x70, 0x2f, 0x69, 0x70, 0x2d, 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x52, 0x06, 0x69, 0x70, 0x49, 0x6e, - 0x49, 0x70, 0x12, 0x69, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0xa8, 0xb1, 0xf7, 0xc0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, + 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, + 0x64, 0x70, 0x2d, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x72, 0x63, 0x2d, + 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, 0x8b, 0x01, 0x0a, 0x0c, 0x73, 0x72, + 0x63, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0xb2, 0x9e, 0xe1, 0x9e, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x50, 0x82, 0x41, 0x4d, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x34, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, + 0x72, 0x63, 0x2d, 0x75, 0x64, 0x70, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0a, 0x73, 0x72, 0x63, + 0x55, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x91, 0x06, 0x0a, 0x05, 0x55, 0x64, 0x70, 0x56, + 0x36, 0x12, 0x75, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x18, 0x9a, 0x95, 0x92, 0xeb, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x48, 0x82, 0x41, 0x45, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, + 0x63, 0x70, 0x52, 0x04, 0x64, 0x73, 0x63, 0x70, 0x12, 0x7b, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x18, 0xe1, 0x83, 0xcb, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x2d, 0x82, 0x41, 0x2a, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x75, 0x65, 0x42, 0x4a, 0x82, 0x41, 0x47, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x77, 0x0a, - 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x8c, 0x85, 0xe8, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, + 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, 0x52, 0x05, + 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x8b, 0x01, 0x0a, 0x0c, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x64, + 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0xdd, 0xbb, 0xbd, 0x83, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x50, 0x82, 0x41, 0x4d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, + 0x70, 0x2d, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x75, + 0x64, 0x70, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0a, 0x64, 0x73, 0x74, 0x55, 0x64, 0x70, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x7a, 0x0a, 0x06, 0x69, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0xa0, 0x99, + 0x8d, 0xbc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4a, 0x82, 0x41, + 0x47, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x74, 0x74, 0x6c, 0x52, 0x05, 0x69, 0x70, 0x54, 0x74, 0x6c, 0x12, + 0x7c, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x98, 0x97, 0xfd, 0xeb, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4a, 0x82, 0x41, 0x47, 0x2f, + 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, 0x8b, 0x01, + 0x0a, 0x0c, 0x73, 0x72, 0x63, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0xc8, + 0xd1, 0xd3, 0xe7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x50, 0x82, + 0x41, 0x4d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, + 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x75, 0x64, 0x70, 0x2d, 0x76, 0x36, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x73, 0x72, 0x63, 0x2d, 0x75, 0x64, 0x70, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x0a, 0x73, 0x72, 0x63, 0x55, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0xed, 0x01, 0x0a, 0x0e, + 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x92, + 0x01, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x7c, + 0x82, 0x41, 0x79, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x46, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0b, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x9a, 0x02, 0x0a, 0x03, + 0x47, 0x72, 0x65, 0x12, 0x5e, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0xd8, 0xa0, + 0xb3, 0xcf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2c, + 0x82, 0x41, 0x29, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x67, 0x72, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, + 0x74, 0x49, 0x70, 0x12, 0x5e, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0xb9, 0xc9, + 0x8b, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2c, + 0x82, 0x41, 0x29, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x67, 0x72, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, + 0x63, 0x49, 0x70, 0x12, 0x53, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0xd3, 0xa1, 0xe2, 0x33, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x29, 0x82, 0x41, 0x26, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x67, 0x72, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x74, 0x74, 0x6c, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x1a, 0xfd, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x09, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0xb7, 0xda, 0xf0, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x72, + 0x65, 0x66, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x79, 0x0a, + 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0xb5, 0x83, + 0xe2, 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3c, 0x82, 0x41, + 0x39, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2d, 0x72, 0x65, 0x66, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x1a, 0xd0, 0x01, 0x0a, 0x06, 0x49, 0x70, 0x49, + 0x6e, 0x49, 0x70, 0x12, 0x62, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0xbf, 0xe8, + 0x8d, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x31, 0x82, + 0x41, 0x2e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x70, 0x2d, 0x69, 0x6e, + 0x2d, 0x69, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, 0x69, 0x70, + 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x62, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x18, 0xf6, 0xf5, 0x95, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x32, 0x82, 0x41, 0x2f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, - 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x70, 0x6f, 0x70, 0x5f, 0x74, 0x6f, - 0x70, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0xac, 0x91, 0x9e, 0xb6, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2f, 0x82, 0x41, 0x2c, 0x2f, 0x61, 0x66, 0x74, 0x73, - 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, - 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x2d, 0x74, 0x6f, - 0x70, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0b, 0x70, 0x6f, 0x70, 0x54, 0x6f, 0x70, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x12, 0xaa, 0x01, 0x0a, 0x17, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, + 0x65, 0x42, 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, + 0x70, 0x2d, 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x72, + 0x63, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x1a, 0x89, 0x03, 0x0a, 0x19, + 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, + 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0xe8, 0x01, 0x0a, 0x38, 0x70, 0x75, + 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xc5, 0xf0, 0xdf, 0x92, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, + 0x6e, 0x75, 0x6d, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, 0x6d, 0x70, + 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x34, + 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, + 0x74, 0x61, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, + 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x80, 0x01, 0x0a, 0x1e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x18, 0xd4, 0xae, 0xba, 0xe9, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, - 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, - 0x48, 0x6f, 0x70, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3c, 0xe0, - 0x49, 0x01, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xc5, 0xe3, 0xd2, 0x16, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, 0x6d, 0x70, 0x6c, 0x73, 0x2d, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x14, 0x70, 0x75, 0x73, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x1a, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, - 0x6b, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0xa2, 0x8f, 0x8c, 0x53, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x37, 0x82, 0x41, 0x34, - 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, - 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x2d, 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x2d, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x72, 0x63, 0x49, - 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x60, 0x0a, 0x09, 0x76, 0x6e, 0x69, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0xca, 0xa6, 0x8d, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x2b, 0x82, 0x41, 0x28, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x6e, 0x69, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x52, 0x08, 0x76, 0x6e, 0x69, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0xfd, 0x01, 0x0a, 0x0c, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x09, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0xb7, 0xda, 0xf0, 0xae, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, - 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x2d, 0x72, 0x65, 0x66, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, - 0x79, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, - 0xb5, 0x83, 0xe2, 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, - 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3c, - 0x82, 0x41, 0x39, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, - 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x72, 0x65, 0x66, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, - 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0c, 0x73, 0x75, - 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x1a, 0xd0, 0x01, 0x0a, 0x06, 0x49, - 0x70, 0x49, 0x6e, 0x49, 0x70, 0x12, 0x62, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, - 0xbf, 0xe8, 0x8d, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, - 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, - 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x70, 0x2d, - 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, - 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x62, 0x0a, 0x06, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x18, 0xf6, 0xf5, 0x95, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, - 0x2f, 0x69, 0x70, 0x2d, 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, - 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x1a, 0x89, 0x03, - 0x0a, 0x19, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0xe8, 0x01, 0x0a, 0x38, - 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xc5, 0xf0, 0xdf, 0x92, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, - 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x70, 0x6c, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, - 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, - 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, - 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x52, 0x34, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x80, 0x01, 0x0a, 0x1e, 0x70, 0x75, 0x73, 0x68, 0x65, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xc5, 0xe3, 0xd2, 0x16, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, - 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, 0x6d, 0x70, 0x6c, - 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x1a, 0x70, - 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x1a, 0xfb, 0x05, 0x0a, 0x0c, 0x4e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x18, 0x92, 0xe7, 0xe1, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, - 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x61, 0x0a, 0x05, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x8f, 0xcb, 0xcc, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x33, 0x82, 0x41, 0x30, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, - 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, - 0x81, 0x01, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0xf2, 0xe3, 0xd2, - 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, - 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x3a, - 0x82, 0x41, 0x37, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, - 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, - 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, - 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, - 0x48, 0x6f, 0x70, 0x1a, 0x82, 0x01, 0x0a, 0x07, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, - 0x77, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x8f, 0xd4, 0xb1, 0x60, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, - 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, + 0x6b, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x1a, 0xfb, 0x05, 0x0a, 0x0c, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x92, 0xe7, 0xe1, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x61, 0x0a, 0x05, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x18, 0x8f, 0xcb, 0xcc, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x33, 0x82, 0x41, 0x30, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x81, 0x01, + 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0xf2, 0xe3, 0xd2, 0x64, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, + 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x3a, 0x82, 0x41, + 0x37, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x1a, 0x82, 0x01, 0x0a, 0x07, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, 0x77, 0x0a, + 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x8f, 0xd4, 0xb1, 0x60, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x1a, 0xec, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x9c, 0x01, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x85, 0x01, 0x82, 0x41, 0x81, 0x01, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, - 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x1a, 0xec, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x78, - 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x9c, 0x01, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x85, 0x01, 0x82, 0x41, 0x81, 0x01, 0x2f, 0x61, - 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, - 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, - 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, - 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, - 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, - 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, - 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x07, - 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x1a, 0xbf, 0x01, 0x0a, 0x0f, 0x4e, 0x65, 0x78, 0x74, - 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x68, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x58, 0x82, 0x41, 0x55, 0x2f, 0x61, 0x66, 0x74, - 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x64, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, + 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x07, 0x6e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x1a, 0xbf, 0x01, 0x0a, 0x0f, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x68, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x58, 0x82, 0x41, 0x55, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x69, - 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, - 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, - 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, - 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x9e, 0x01, 0x0a, 0x0a, 0x4e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x46, 0x82, 0x41, 0x43, 0x2f, 0x61, 0x66, 0x74, - 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, - 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, - 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, - 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, - 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x1a, 0xa1, 0x0f, 0x0a, 0x15, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xa2, 0xfa, 0xd7, 0x43, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x64, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x69, 0x64, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, + 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x9e, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x46, 0x82, 0x41, 0x43, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, 0x2f, + 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, + 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, + 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x1a, 0xa1, 0x0f, 0x0a, 0x15, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xa2, 0xfa, 0xd7, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x72, 0x0a, 0x07, + 0x69, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0xce, 0x81, 0xa5, 0xa7, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x72, - 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0xce, 0x81, 0xa5, 0xa7, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, - 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x61, 0x66, - 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x64, 0x73, 0x63, 0x70, 0x52, 0x06, 0x69, 0x70, 0x44, 0x73, - 0x63, 0x70, 0x12, 0x79, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, - 0xa0, 0xaa, 0xcd, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, - 0x42, 0x82, 0x41, 0x3f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x52, 0x08, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0xea, 0x01, - 0x0a, 0x30, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, - 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x73, 0x69, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x18, 0xdc, 0xfd, 0xa0, 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x72, - 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, - 0x4f, 0x4c, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x2e, 0x69, 0x70, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x69, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x77, 0x0a, 0x12, 0x69, 0x70, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, - 0x18, 0xc9, 0xad, 0xd9, 0x76, 0x20, 0x01, 0x28, 0x04, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, - 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, - 0x00, 0x52, 0x10, 0x69, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x12, 0x7d, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0xde, 0xba, 0xab, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x34, 0x2d, 0x64, - 0x73, 0x74, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x6c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x12, 0x7d, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0xcf, 0x9c, 0xba, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, - 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x2f, 0x69, 0x70, 0x2d, 0x64, 0x73, 0x63, 0x70, 0x52, 0x06, 0x69, 0x70, 0x44, 0x73, 0x63, 0x70, + 0x12, 0x79, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0xa0, 0xaa, + 0xcd, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x42, 0x82, + 0x41, 0x3f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x52, 0x08, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0xea, 0x01, 0x0a, 0x30, + 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x74, 0x79, 0x70, 0x65, 0x73, 0x69, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x18, 0xdc, 0xfd, 0xa0, 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x34, 0x2d, 0x73, 0x72, - 0x63, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x6c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x80, 0x01, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x86, 0xb9, 0xad, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, - 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x61, 0x63, - 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0xdb, 0x01, 0x0a, 0x2b, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, - 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x8a, 0xc1, 0xda, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, - 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, 0x6d, - 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x2e, 0x69, 0x70, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x73, 0x69, 0x70, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x77, 0x0a, 0x12, 0x69, 0x70, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xc9, + 0xad, 0xd9, 0x76, 0x20, 0x01, 0x28, 0x04, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, 0x52, + 0x10, 0x69, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x12, 0x7d, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0xde, 0xba, 0xab, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x34, 0x2d, 0x64, 0x73, 0x74, + 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x6c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x12, 0x7d, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0xcf, 0x9c, 0xba, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x44, + 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x34, 0x2d, 0x73, 0x72, 0x63, 0x2d, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x6c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x80, 0x01, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x86, 0xb9, 0xad, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2d, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x29, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0xdb, 0x01, 0x0a, 0x2b, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, - 0x75, 0x6d, 0x12, 0x75, 0x0a, 0x11, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xce, 0xc5, 0x85, 0x92, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x75, 0x6d, 0x18, 0x8a, 0xc1, 0xda, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, + 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x43, + 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x29, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, + 0x12, 0x75, 0x0a, 0x11, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x75, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xce, 0xc5, 0x85, 0x92, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x0f, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x72, 0x0a, 0x07, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x74, 0x63, 0x18, 0x92, 0xf7, 0xac, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, - 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x0f, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x72, 0x0a, 0x07, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x74, 0x63, 0x18, 0x92, 0xf7, 0xac, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, + 0x2d, 0x74, 0x63, 0x52, 0x06, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x63, 0x12, 0x85, 0x01, 0x0a, 0x0e, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0xef, + 0x8e, 0xe5, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, + 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0xb9, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xea, 0xf2, 0xa5, 0xde, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x58, 0x82, 0x41, 0x55, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, + 0x0d, 0x0a, 0x0b, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x0c, + 0x0a, 0x0a, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0x86, 0x02, 0x0a, + 0x18, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x74, 0x82, 0x41, 0x71, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, - 0x6c, 0x73, 0x2d, 0x74, 0x63, 0x52, 0x06, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x63, 0x12, 0x85, 0x01, - 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0xef, 0x8e, 0xe5, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, - 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, - 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, - 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xb9, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, - 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xea, 0xf2, 0xa5, 0xde, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x58, 0x82, 0x41, 0x55, 0x2f, - 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0x86, - 0x02, 0x0a, 0x18, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x74, 0x82, 0x41, 0x71, - 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, - 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5d, 0x0a, 0x17, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x69, 0x62, - 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x15, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5d, 0x0a, 0x17, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, + 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, + 0x72, 0x69, 0x62, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, + 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2230,37 +3160,47 @@ func file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP() []byte { return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescData } -var file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes = make([]protoimpl.MessageInfo, 22) -var file_v1_proto_gribi_aft_gribi_aft_proto_goTypes = []interface{}{ - (*Device)(nil), // 0: gribi_aft.Device - (*Afts)(nil), // 1: gribi_aft.Afts - (*Afts_Ipv4Entry)(nil), // 2: gribi_aft.Afts.Ipv4Entry - (*Afts_Ipv4EntryKey)(nil), // 3: gribi_aft.Afts.Ipv4EntryKey - (*Afts_Ipv6Entry)(nil), // 4: gribi_aft.Afts.Ipv6Entry - (*Afts_Ipv6EntryKey)(nil), // 5: gribi_aft.Afts.Ipv6EntryKey - (*Afts_LabelEntry)(nil), // 6: gribi_aft.Afts.LabelEntry - (*Afts_LabelEntryKey)(nil), // 7: gribi_aft.Afts.LabelEntryKey - (*Afts_MacEntry)(nil), // 8: gribi_aft.Afts.MacEntry - (*Afts_MacEntryKey)(nil), // 9: gribi_aft.Afts.MacEntryKey - (*Afts_NextHop)(nil), // 10: gribi_aft.Afts.NextHop - (*Afts_NextHopGroup)(nil), // 11: gribi_aft.Afts.NextHopGroup - (*Afts_NextHopGroupKey)(nil), // 12: gribi_aft.Afts.NextHopGroupKey - (*Afts_NextHopKey)(nil), // 13: gribi_aft.Afts.NextHopKey - (*Afts_PolicyForwardingEntry)(nil), // 14: gribi_aft.Afts.PolicyForwardingEntry - (*Afts_PolicyForwardingEntryKey)(nil), // 15: gribi_aft.Afts.PolicyForwardingEntryKey - (*Afts_LabelEntry_PoppedMplsLabelStackUnion)(nil), // 16: gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion - (*Afts_NextHop_InterfaceRef)(nil), // 17: gribi_aft.Afts.NextHop.InterfaceRef - (*Afts_NextHop_IpInIp)(nil), // 18: gribi_aft.Afts.NextHop.IpInIp - (*Afts_NextHop_PushedMplsLabelStackUnion)(nil), // 19: gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion - (*Afts_NextHopGroup_NextHop)(nil), // 20: gribi_aft.Afts.NextHopGroup.NextHop - (*Afts_NextHopGroup_NextHopKey)(nil), // 21: gribi_aft.Afts.NextHopGroup.NextHopKey - (enums.OpenconfigAftTypesEncapsulationHeaderType)(0), // 22: gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType - (*ywrapper.BytesValue)(nil), // 23: ywrapper.BytesValue - (*ywrapper.UintValue)(nil), // 24: ywrapper.UintValue - (*ywrapper.StringValue)(nil), // 25: ywrapper.StringValue - (enums.OpenconfigMplsTypesMplsLabelEnum)(0), // 26: gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum - (*ywrapper.BoolValue)(nil), // 27: ywrapper.BoolValue - (enums.OpenconfigPacketMatchTypesIPPROTOCOL)(0), // 28: gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL +var file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_v1_proto_gribi_aft_gribi_aft_proto_goTypes = []any{ + (*Device)(nil), // 0: gribi_aft.Device + (*Afts)(nil), // 1: gribi_aft.Afts + (*Afts_Ipv4Entry)(nil), // 2: gribi_aft.Afts.Ipv4Entry + (*Afts_Ipv4EntryKey)(nil), // 3: gribi_aft.Afts.Ipv4EntryKey + (*Afts_Ipv6Entry)(nil), // 4: gribi_aft.Afts.Ipv6Entry + (*Afts_Ipv6EntryKey)(nil), // 5: gribi_aft.Afts.Ipv6EntryKey + (*Afts_LabelEntry)(nil), // 6: gribi_aft.Afts.LabelEntry + (*Afts_LabelEntryKey)(nil), // 7: gribi_aft.Afts.LabelEntryKey + (*Afts_MacEntry)(nil), // 8: gribi_aft.Afts.MacEntry + (*Afts_MacEntryKey)(nil), // 9: gribi_aft.Afts.MacEntryKey + (*Afts_NextHop)(nil), // 10: gribi_aft.Afts.NextHop + (*Afts_NextHopGroup)(nil), // 11: gribi_aft.Afts.NextHopGroup + (*Afts_NextHopGroupKey)(nil), // 12: gribi_aft.Afts.NextHopGroupKey + (*Afts_NextHopKey)(nil), // 13: gribi_aft.Afts.NextHopKey + (*Afts_PolicyForwardingEntry)(nil), // 14: gribi_aft.Afts.PolicyForwardingEntry + (*Afts_PolicyForwardingEntryKey)(nil), // 15: gribi_aft.Afts.PolicyForwardingEntryKey + (*Afts_LabelEntry_PoppedMplsLabelStackUnion)(nil), // 16: gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion + (*Afts_NextHop_EncapHeader)(nil), // 17: gribi_aft.Afts.NextHop.EncapHeader + (*Afts_NextHop_EncapHeaderKey)(nil), // 18: gribi_aft.Afts.NextHop.EncapHeaderKey + (*Afts_NextHop_Gre)(nil), // 19: gribi_aft.Afts.NextHop.Gre + (*Afts_NextHop_InterfaceRef)(nil), // 20: gribi_aft.Afts.NextHop.InterfaceRef + (*Afts_NextHop_IpInIp)(nil), // 21: gribi_aft.Afts.NextHop.IpInIp + (*Afts_NextHop_PushedMplsLabelStackUnion)(nil), // 22: gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion + (*Afts_NextHop_EncapHeader_Gre)(nil), // 23: gribi_aft.Afts.NextHop.EncapHeader.Gre + (*Afts_NextHop_EncapHeader_Ipv4)(nil), // 24: gribi_aft.Afts.NextHop.EncapHeader.Ipv4 + (*Afts_NextHop_EncapHeader_Ipv6)(nil), // 25: gribi_aft.Afts.NextHop.EncapHeader.Ipv6 + (*Afts_NextHop_EncapHeader_Mpls)(nil), // 26: gribi_aft.Afts.NextHop.EncapHeader.Mpls + (*Afts_NextHop_EncapHeader_UdpV4)(nil), // 27: gribi_aft.Afts.NextHop.EncapHeader.UdpV4 + (*Afts_NextHop_EncapHeader_UdpV6)(nil), // 28: gribi_aft.Afts.NextHop.EncapHeader.UdpV6 + (*Afts_NextHop_EncapHeader_Mpls_MplsLabelStackUnion)(nil), // 29: gribi_aft.Afts.NextHop.EncapHeader.Mpls.MplsLabelStackUnion + (*Afts_NextHopGroup_NextHop)(nil), // 30: gribi_aft.Afts.NextHopGroup.NextHop + (*Afts_NextHopGroup_NextHopKey)(nil), // 31: gribi_aft.Afts.NextHopGroup.NextHopKey + (enums.OpenconfigAftTypesEncapsulationHeaderType)(0), // 32: gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + (*ywrapper.BytesValue)(nil), // 33: ywrapper.BytesValue + (*ywrapper.UintValue)(nil), // 34: ywrapper.UintValue + (*ywrapper.StringValue)(nil), // 35: ywrapper.StringValue + (enums.OpenconfigMplsTypesMplsLabelEnum)(0), // 36: gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + (*ywrapper.BoolValue)(nil), // 37: ywrapper.BoolValue + (enums.OpenconfigPacketMatchTypesIPPROTOCOL)(0), // 38: gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL } var file_v1_proto_gribi_aft_gribi_aft_proto_depIdxs = []int32{ 1, // 0: gribi_aft.Device.afts:type_name -> gribi_aft.Afts @@ -2271,67 +3211,102 @@ var file_v1_proto_gribi_aft_gribi_aft_proto_depIdxs = []int32{ 13, // 5: gribi_aft.Afts.next_hop:type_name -> gribi_aft.Afts.NextHopKey 12, // 6: gribi_aft.Afts.next_hop_group:type_name -> gribi_aft.Afts.NextHopGroupKey 15, // 7: gribi_aft.Afts.policy_forwarding_entry:type_name -> gribi_aft.Afts.PolicyForwardingEntryKey - 22, // 8: gribi_aft.Afts.Ipv4Entry.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType - 23, // 9: gribi_aft.Afts.Ipv4Entry.entry_metadata:type_name -> ywrapper.BytesValue - 24, // 10: gribi_aft.Afts.Ipv4Entry.next_hop_group:type_name -> ywrapper.UintValue - 25, // 11: gribi_aft.Afts.Ipv4Entry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 32, // 8: gribi_aft.Afts.Ipv4Entry.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 33, // 9: gribi_aft.Afts.Ipv4Entry.entry_metadata:type_name -> ywrapper.BytesValue + 34, // 10: gribi_aft.Afts.Ipv4Entry.next_hop_group:type_name -> ywrapper.UintValue + 35, // 11: gribi_aft.Afts.Ipv4Entry.next_hop_group_network_instance:type_name -> ywrapper.StringValue 2, // 12: gribi_aft.Afts.Ipv4EntryKey.ipv4_entry:type_name -> gribi_aft.Afts.Ipv4Entry - 22, // 13: gribi_aft.Afts.Ipv6Entry.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType - 23, // 14: gribi_aft.Afts.Ipv6Entry.entry_metadata:type_name -> ywrapper.BytesValue - 24, // 15: gribi_aft.Afts.Ipv6Entry.next_hop_group:type_name -> ywrapper.UintValue - 25, // 16: gribi_aft.Afts.Ipv6Entry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 32, // 13: gribi_aft.Afts.Ipv6Entry.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 33, // 14: gribi_aft.Afts.Ipv6Entry.entry_metadata:type_name -> ywrapper.BytesValue + 34, // 15: gribi_aft.Afts.Ipv6Entry.next_hop_group:type_name -> ywrapper.UintValue + 35, // 16: gribi_aft.Afts.Ipv6Entry.next_hop_group_network_instance:type_name -> ywrapper.StringValue 4, // 17: gribi_aft.Afts.Ipv6EntryKey.ipv6_entry:type_name -> gribi_aft.Afts.Ipv6Entry - 23, // 18: gribi_aft.Afts.LabelEntry.entry_metadata:type_name -> ywrapper.BytesValue - 24, // 19: gribi_aft.Afts.LabelEntry.next_hop_group:type_name -> ywrapper.UintValue - 25, // 20: gribi_aft.Afts.LabelEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 33, // 18: gribi_aft.Afts.LabelEntry.entry_metadata:type_name -> ywrapper.BytesValue + 34, // 19: gribi_aft.Afts.LabelEntry.next_hop_group:type_name -> ywrapper.UintValue + 35, // 20: gribi_aft.Afts.LabelEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue 16, // 21: gribi_aft.Afts.LabelEntry.popped_mpls_label_stack:type_name -> gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion - 26, // 22: gribi_aft.Afts.LabelEntryKey.label_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 36, // 22: gribi_aft.Afts.LabelEntryKey.label_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum 6, // 23: gribi_aft.Afts.LabelEntryKey.label_entry:type_name -> gribi_aft.Afts.LabelEntry - 23, // 24: gribi_aft.Afts.MacEntry.entry_metadata:type_name -> ywrapper.BytesValue - 24, // 25: gribi_aft.Afts.MacEntry.next_hop_group:type_name -> ywrapper.UintValue - 25, // 26: gribi_aft.Afts.MacEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 33, // 24: gribi_aft.Afts.MacEntry.entry_metadata:type_name -> ywrapper.BytesValue + 34, // 25: gribi_aft.Afts.MacEntry.next_hop_group:type_name -> ywrapper.UintValue + 35, // 26: gribi_aft.Afts.MacEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue 8, // 27: gribi_aft.Afts.MacEntryKey.mac_entry:type_name -> gribi_aft.Afts.MacEntry - 22, // 28: gribi_aft.Afts.NextHop.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType - 22, // 29: gribi_aft.Afts.NextHop.encapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType - 17, // 30: gribi_aft.Afts.NextHop.interface_ref:type_name -> gribi_aft.Afts.NextHop.InterfaceRef - 25, // 31: gribi_aft.Afts.NextHop.ip_address:type_name -> ywrapper.StringValue - 18, // 32: gribi_aft.Afts.NextHop.ip_in_ip:type_name -> gribi_aft.Afts.NextHop.IpInIp - 25, // 33: gribi_aft.Afts.NextHop.mac_address:type_name -> ywrapper.StringValue - 25, // 34: gribi_aft.Afts.NextHop.network_instance:type_name -> ywrapper.StringValue - 27, // 35: gribi_aft.Afts.NextHop.pop_top_label:type_name -> ywrapper.BoolValue - 19, // 36: gribi_aft.Afts.NextHop.pushed_mpls_label_stack:type_name -> gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion - 25, // 37: gribi_aft.Afts.NextHop.tunnel_src_ip_address:type_name -> ywrapper.StringValue - 24, // 38: gribi_aft.Afts.NextHop.vni_label:type_name -> ywrapper.UintValue - 24, // 39: gribi_aft.Afts.NextHopGroup.backup_next_hop_group:type_name -> ywrapper.UintValue - 24, // 40: gribi_aft.Afts.NextHopGroup.color:type_name -> ywrapper.UintValue - 21, // 41: gribi_aft.Afts.NextHopGroup.next_hop:type_name -> gribi_aft.Afts.NextHopGroup.NextHopKey - 11, // 42: gribi_aft.Afts.NextHopGroupKey.next_hop_group:type_name -> gribi_aft.Afts.NextHopGroup - 10, // 43: gribi_aft.Afts.NextHopKey.next_hop:type_name -> gribi_aft.Afts.NextHop - 23, // 44: gribi_aft.Afts.PolicyForwardingEntry.entry_metadata:type_name -> ywrapper.BytesValue - 24, // 45: gribi_aft.Afts.PolicyForwardingEntry.ip_dscp:type_name -> ywrapper.UintValue - 25, // 46: gribi_aft.Afts.PolicyForwardingEntry.ip_prefix:type_name -> ywrapper.StringValue - 28, // 47: gribi_aft.Afts.PolicyForwardingEntry.ip_protocol_openconfigpacketmatchtypesipprotocol:type_name -> gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL - 24, // 48: gribi_aft.Afts.PolicyForwardingEntry.l4_dst_port:type_name -> ywrapper.UintValue - 24, // 49: gribi_aft.Afts.PolicyForwardingEntry.l4_src_port:type_name -> ywrapper.UintValue - 25, // 50: gribi_aft.Afts.PolicyForwardingEntry.mac_address:type_name -> ywrapper.StringValue - 26, // 51: gribi_aft.Afts.PolicyForwardingEntry.mpls_label_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum - 24, // 52: gribi_aft.Afts.PolicyForwardingEntry.mpls_tc:type_name -> ywrapper.UintValue - 24, // 53: gribi_aft.Afts.PolicyForwardingEntry.next_hop_group:type_name -> ywrapper.UintValue - 25, // 54: gribi_aft.Afts.PolicyForwardingEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue - 14, // 55: gribi_aft.Afts.PolicyForwardingEntryKey.policy_forwarding_entry:type_name -> gribi_aft.Afts.PolicyForwardingEntry - 26, // 56: gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion.popped_mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum - 25, // 57: gribi_aft.Afts.NextHop.InterfaceRef.interface:type_name -> ywrapper.StringValue - 24, // 58: gribi_aft.Afts.NextHop.InterfaceRef.subinterface:type_name -> ywrapper.UintValue - 25, // 59: gribi_aft.Afts.NextHop.IpInIp.dst_ip:type_name -> ywrapper.StringValue - 25, // 60: gribi_aft.Afts.NextHop.IpInIp.src_ip:type_name -> ywrapper.StringValue - 26, // 61: gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion.pushed_mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum - 24, // 62: gribi_aft.Afts.NextHopGroup.NextHop.weight:type_name -> ywrapper.UintValue - 20, // 63: gribi_aft.Afts.NextHopGroup.NextHopKey.next_hop:type_name -> gribi_aft.Afts.NextHopGroup.NextHop - 64, // [64:64] is the sub-list for method output_type - 64, // [64:64] is the sub-list for method input_type - 64, // [64:64] is the sub-list for extension type_name - 64, // [64:64] is the sub-list for extension extendee - 0, // [0:64] is the sub-list for field type_name + 32, // 28: gribi_aft.Afts.NextHop.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 18, // 29: gribi_aft.Afts.NextHop.encap_header:type_name -> gribi_aft.Afts.NextHop.EncapHeaderKey + 32, // 30: gribi_aft.Afts.NextHop.encapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 19, // 31: gribi_aft.Afts.NextHop.gre:type_name -> gribi_aft.Afts.NextHop.Gre + 20, // 32: gribi_aft.Afts.NextHop.interface_ref:type_name -> gribi_aft.Afts.NextHop.InterfaceRef + 35, // 33: gribi_aft.Afts.NextHop.ip_address:type_name -> ywrapper.StringValue + 21, // 34: gribi_aft.Afts.NextHop.ip_in_ip:type_name -> gribi_aft.Afts.NextHop.IpInIp + 35, // 35: gribi_aft.Afts.NextHop.mac_address:type_name -> ywrapper.StringValue + 35, // 36: gribi_aft.Afts.NextHop.network_instance:type_name -> ywrapper.StringValue + 37, // 37: gribi_aft.Afts.NextHop.pop_top_label:type_name -> ywrapper.BoolValue + 22, // 38: gribi_aft.Afts.NextHop.pushed_mpls_label_stack:type_name -> gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion + 35, // 39: gribi_aft.Afts.NextHop.tunnel_src_ip_address:type_name -> ywrapper.StringValue + 34, // 40: gribi_aft.Afts.NextHop.vni_label:type_name -> ywrapper.UintValue + 34, // 41: gribi_aft.Afts.NextHopGroup.backup_next_hop_group:type_name -> ywrapper.UintValue + 34, // 42: gribi_aft.Afts.NextHopGroup.color:type_name -> ywrapper.UintValue + 31, // 43: gribi_aft.Afts.NextHopGroup.next_hop:type_name -> gribi_aft.Afts.NextHopGroup.NextHopKey + 11, // 44: gribi_aft.Afts.NextHopGroupKey.next_hop_group:type_name -> gribi_aft.Afts.NextHopGroup + 10, // 45: gribi_aft.Afts.NextHopKey.next_hop:type_name -> gribi_aft.Afts.NextHop + 33, // 46: gribi_aft.Afts.PolicyForwardingEntry.entry_metadata:type_name -> ywrapper.BytesValue + 34, // 47: gribi_aft.Afts.PolicyForwardingEntry.ip_dscp:type_name -> ywrapper.UintValue + 35, // 48: gribi_aft.Afts.PolicyForwardingEntry.ip_prefix:type_name -> ywrapper.StringValue + 38, // 49: gribi_aft.Afts.PolicyForwardingEntry.ip_protocol_openconfigpacketmatchtypesipprotocol:type_name -> gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL + 34, // 50: gribi_aft.Afts.PolicyForwardingEntry.l4_dst_port:type_name -> ywrapper.UintValue + 34, // 51: gribi_aft.Afts.PolicyForwardingEntry.l4_src_port:type_name -> ywrapper.UintValue + 35, // 52: gribi_aft.Afts.PolicyForwardingEntry.mac_address:type_name -> ywrapper.StringValue + 36, // 53: gribi_aft.Afts.PolicyForwardingEntry.mpls_label_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 34, // 54: gribi_aft.Afts.PolicyForwardingEntry.mpls_tc:type_name -> ywrapper.UintValue + 34, // 55: gribi_aft.Afts.PolicyForwardingEntry.next_hop_group:type_name -> ywrapper.UintValue + 35, // 56: gribi_aft.Afts.PolicyForwardingEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 14, // 57: gribi_aft.Afts.PolicyForwardingEntryKey.policy_forwarding_entry:type_name -> gribi_aft.Afts.PolicyForwardingEntry + 36, // 58: gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion.popped_mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 23, // 59: gribi_aft.Afts.NextHop.EncapHeader.gre:type_name -> gribi_aft.Afts.NextHop.EncapHeader.Gre + 24, // 60: gribi_aft.Afts.NextHop.EncapHeader.ipv4:type_name -> gribi_aft.Afts.NextHop.EncapHeader.Ipv4 + 25, // 61: gribi_aft.Afts.NextHop.EncapHeader.ipv6:type_name -> gribi_aft.Afts.NextHop.EncapHeader.Ipv6 + 26, // 62: gribi_aft.Afts.NextHop.EncapHeader.mpls:type_name -> gribi_aft.Afts.NextHop.EncapHeader.Mpls + 32, // 63: gribi_aft.Afts.NextHop.EncapHeader.type:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 27, // 64: gribi_aft.Afts.NextHop.EncapHeader.udp_v4:type_name -> gribi_aft.Afts.NextHop.EncapHeader.UdpV4 + 28, // 65: gribi_aft.Afts.NextHop.EncapHeader.udp_v6:type_name -> gribi_aft.Afts.NextHop.EncapHeader.UdpV6 + 17, // 66: gribi_aft.Afts.NextHop.EncapHeaderKey.encap_header:type_name -> gribi_aft.Afts.NextHop.EncapHeader + 35, // 67: gribi_aft.Afts.NextHop.Gre.dst_ip:type_name -> ywrapper.StringValue + 35, // 68: gribi_aft.Afts.NextHop.Gre.src_ip:type_name -> ywrapper.StringValue + 34, // 69: gribi_aft.Afts.NextHop.Gre.ttl:type_name -> ywrapper.UintValue + 35, // 70: gribi_aft.Afts.NextHop.InterfaceRef.interface:type_name -> ywrapper.StringValue + 34, // 71: gribi_aft.Afts.NextHop.InterfaceRef.subinterface:type_name -> ywrapper.UintValue + 35, // 72: gribi_aft.Afts.NextHop.IpInIp.dst_ip:type_name -> ywrapper.StringValue + 35, // 73: gribi_aft.Afts.NextHop.IpInIp.src_ip:type_name -> ywrapper.StringValue + 36, // 74: gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion.pushed_mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 35, // 75: gribi_aft.Afts.NextHop.EncapHeader.Gre.dst_ip:type_name -> ywrapper.StringValue + 35, // 76: gribi_aft.Afts.NextHop.EncapHeader.Gre.src_ip:type_name -> ywrapper.StringValue + 34, // 77: gribi_aft.Afts.NextHop.EncapHeader.Gre.ttl:type_name -> ywrapper.UintValue + 35, // 78: gribi_aft.Afts.NextHop.EncapHeader.Ipv4.dst_ip:type_name -> ywrapper.StringValue + 35, // 79: gribi_aft.Afts.NextHop.EncapHeader.Ipv4.src_ip:type_name -> ywrapper.StringValue + 35, // 80: gribi_aft.Afts.NextHop.EncapHeader.Ipv6.dst_ip:type_name -> ywrapper.StringValue + 35, // 81: gribi_aft.Afts.NextHop.EncapHeader.Ipv6.src_ip:type_name -> ywrapper.StringValue + 29, // 82: gribi_aft.Afts.NextHop.EncapHeader.Mpls.mpls_label_stack:type_name -> gribi_aft.Afts.NextHop.EncapHeader.Mpls.MplsLabelStackUnion + 34, // 83: gribi_aft.Afts.NextHop.EncapHeader.Mpls.traffic_class:type_name -> ywrapper.UintValue + 34, // 84: gribi_aft.Afts.NextHop.EncapHeader.UdpV4.dscp:type_name -> ywrapper.UintValue + 35, // 85: gribi_aft.Afts.NextHop.EncapHeader.UdpV4.dst_ip:type_name -> ywrapper.StringValue + 34, // 86: gribi_aft.Afts.NextHop.EncapHeader.UdpV4.dst_udp_port:type_name -> ywrapper.UintValue + 34, // 87: gribi_aft.Afts.NextHop.EncapHeader.UdpV4.ip_ttl:type_name -> ywrapper.UintValue + 35, // 88: gribi_aft.Afts.NextHop.EncapHeader.UdpV4.src_ip:type_name -> ywrapper.StringValue + 34, // 89: gribi_aft.Afts.NextHop.EncapHeader.UdpV4.src_udp_port:type_name -> ywrapper.UintValue + 34, // 90: gribi_aft.Afts.NextHop.EncapHeader.UdpV6.dscp:type_name -> ywrapper.UintValue + 35, // 91: gribi_aft.Afts.NextHop.EncapHeader.UdpV6.dst_ip:type_name -> ywrapper.StringValue + 34, // 92: gribi_aft.Afts.NextHop.EncapHeader.UdpV6.dst_udp_port:type_name -> ywrapper.UintValue + 34, // 93: gribi_aft.Afts.NextHop.EncapHeader.UdpV6.ip_ttl:type_name -> ywrapper.UintValue + 35, // 94: gribi_aft.Afts.NextHop.EncapHeader.UdpV6.src_ip:type_name -> ywrapper.StringValue + 34, // 95: gribi_aft.Afts.NextHop.EncapHeader.UdpV6.src_udp_port:type_name -> ywrapper.UintValue + 36, // 96: gribi_aft.Afts.NextHop.EncapHeader.Mpls.MplsLabelStackUnion.mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 34, // 97: gribi_aft.Afts.NextHopGroup.NextHop.weight:type_name -> ywrapper.UintValue + 30, // 98: gribi_aft.Afts.NextHopGroup.NextHopKey.next_hop:type_name -> gribi_aft.Afts.NextHopGroup.NextHop + 99, // [99:99] is the sub-list for method output_type + 99, // [99:99] is the sub-list for method input_type + 99, // [99:99] is the sub-list for extension type_name + 99, // [99:99] is the sub-list for extension extendee + 0, // [0:99] is the sub-list for field type_name } func init() { file_v1_proto_gribi_aft_gribi_aft_proto_init() } @@ -2339,277 +3314,11 @@ func file_v1_proto_gribi_aft_gribi_aft_proto_init() { if File_v1_proto_gribi_aft_gribi_aft_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Device); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_Ipv4Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_Ipv4EntryKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_Ipv6Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_Ipv6EntryKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_LabelEntry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_LabelEntryKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_MacEntry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_MacEntryKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHop); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHopGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHopGroupKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHopKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_PolicyForwardingEntry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_PolicyForwardingEntryKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_LabelEntry_PoppedMplsLabelStackUnion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHop_InterfaceRef); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHop_IpInIp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHop_PushedMplsLabelStackUnion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHopGroup_NextHop); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Afts_NextHopGroup_NextHopKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7].OneofWrappers = []any{ (*Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum)(nil), (*Afts_LabelEntryKey_LabelUint64)(nil), } - file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14].OneofWrappers = []any{ (*Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol)(nil), (*Afts_PolicyForwardingEntry_IpProtocolUint64)(nil), (*Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum)(nil), @@ -2621,7 +3330,7 @@ func file_v1_proto_gribi_aft_gribi_aft_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 32, NumExtensions: 0, NumServices: 0, }, diff --git a/v1/proto/gribi_aft/gribi_aft.proto b/v1/proto/gribi_aft/gribi_aft.proto index 8e48670..120015a 100644 --- a/v1/proto/gribi_aft/gribi_aft.proto +++ b/v1/proto/gribi_aft/gribi_aft.proto @@ -68,6 +68,61 @@ message Afts { MacEntry mac_entry = 2; } message NextHop { + message EncapHeader { + message Gre { + ywrapper.StringValue dst_ip = 330920437 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/gre/state/dst-ip"]; + ywrapper.StringValue src_ip = 509569356 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/gre/state/src-ip"]; + ywrapper.UintValue ttl = 267157040 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/gre/state/ttl"]; + } + message Ipv4 { + ywrapper.StringValue dst_ip = 403354420 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/ipv4/state/dst-ip"]; + ywrapper.StringValue src_ip = 293130725 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/ipv4/state/src-ip"]; + } + message Ipv6 { + ywrapper.StringValue dst_ip = 469869578 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/ipv6/state/dst-ip"]; + ywrapper.StringValue src_ip = 254664891 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/ipv6/state/src-ip"]; + } + message Mpls { + message MplsLabelStackUnion { + gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum mpls_label_stack_openconfigmplstypesmplslabelenum = 212167609 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/mpls/state/mpls-label-stack"]; + uint64 mpls_label_stack_uint64 = 205621201 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/mpls/state/mpls-label-stack"]; + } + repeated MplsLabelStackUnion mpls_label_stack = 310218456 [(yext.leaflistunion) = true,(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/mpls/state/mpls-label-stack"]; + ywrapper.UintValue traffic_class = 380564126 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/mpls/state/traffic-class"]; + } + message UdpV4 { + ywrapper.UintValue dscp = 404304264 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4/state/dscp"]; + ywrapper.StringValue dst_ip = 425782075 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4/state/dst-ip"]; + ywrapper.UintValue dst_udp_port = 26930775 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4/state/dst-udp-port"]; + ywrapper.UintValue ip_ttl = 489501006 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4/state/ip-ttl"]; + ywrapper.StringValue src_ip = 223532242 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4/state/src-ip"]; + ywrapper.UintValue src_udp_port = 332943154 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4/state/src-udp-port"]; + } + message UdpV6 { + ywrapper.UintValue dscp = 493128346 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6/state/dscp"]; + ywrapper.StringValue dst_ip = 148029921 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6/state/dst-ip"]; + ywrapper.UintValue dst_udp_port = 275733981 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6/state/dst-udp-port"]; + ywrapper.UintValue ip_ttl = 394480800 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6/state/ip-ttl"]; + ywrapper.StringValue src_ip = 494881688 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6/state/src-ip"]; + ywrapper.UintValue src_udp_port = 485812424 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6/state/src-udp-port"]; + } + Gre gre = 301373623 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/gre"]; + Ipv4 ipv4 = 191386200 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/ipv4"]; + Ipv6 ipv6 = 191386202 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/ipv6"]; + Mpls mpls = 393605309 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/mpls"]; + gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType type = 254997883 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/state/type"]; + UdpV4 udp_v4 = 171499561 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v4"]; + UdpV6 udp_v6 = 171499563 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/udp-v6"]; + } + message EncapHeaderKey { + uint64 index = 1 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header/state/index|/afts/next-hops/next-hop/encap-headers/encap-header/index"]; + EncapHeader encap_header = 2; + } + message Gre { + ywrapper.StringValue dst_ip = 434950232 [(yext.schemapath) = "/afts/next-hops/next-hop/gre/state/dst-ip"]; + ywrapper.StringValue src_ip = 440591545 [(yext.schemapath) = "/afts/next-hops/next-hop/gre/state/src-ip"]; + ywrapper.UintValue ttl = 108564691 [(yext.schemapath) = "/afts/next-hops/next-hop/gre/state/ttl"]; + } message InterfaceRef { ywrapper.StringValue interface = 366751031 [(yext.schemapath) = "/afts/next-hops/next-hop/interface-ref/state/interface"]; ywrapper.UintValue subinterface = 488145333 [(yext.schemapath) = "/afts/next-hops/next-hop/interface-ref/state/subinterface"]; @@ -81,7 +136,9 @@ message Afts { uint64 pushed_mpls_label_stack_uint64 = 47493573 [(yext.schemapath) = "/afts/next-hops/next-hop/state/pushed-mpls-label-stack"]; } gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType decapsulate_header = 104970793 [(yext.schemapath) = "/afts/next-hops/next-hop/state/decapsulate-header"]; + repeated EncapHeaderKey encap_header = 125711186 [(yext.schemapath) = "/afts/next-hops/next-hop/encap-headers/encap-header"]; gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType encapsulate_header = 69966061 [(yext.schemapath) = "/afts/next-hops/next-hop/state/encapsulate-header"]; + Gre gre = 45203444 [(yext.schemapath) = "/afts/next-hops/next-hop/gre"]; InterfaceRef interface_ref = 293682821 [(yext.schemapath) = "/afts/next-hops/next-hop/interface-ref"]; ywrapper.StringValue ip_address = 242108262 [(yext.schemapath) = "/afts/next-hops/next-hop/state/ip-address"]; IpInIp ip_in_ip = 157296597 [(yext.schemapath) = "/afts/next-hops/next-hop/ip-in-ip"]; diff --git a/v1/proto/service/gribi.pb.go b/v1/proto/service/gribi.pb.go index 30b1a06..7b9265f 100644 --- a/v1/proto/service/gribi.pb.go +++ b/v1/proto/service/gribi.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 -// protoc v3.21.0--rc1 +// protoc-gen-go v1.35.1 +// protoc v5.28.2 // source: v1/proto/service/gribi.proto package gribi @@ -183,7 +183,7 @@ const ( // there are likely to be more different cases that we // want to use here - e.g., RIB_PROGRAMMED and FIB_PROGRAMMED. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in v1/proto/service/gribi.proto. AFTResult_OK AFTResult_Status = 1 // FAILED is used to indicate that operation that was provided // cannot be programmed, for example, due to invalid message @@ -200,10 +200,10 @@ const ( // all linecards that host a particular VRF etc). This notification may // not always be sent for a particular operation since: // - // a) the entry may be duplicate for another gRIBI client. - // b) the entry may not be the preferred system route (e.g., there - // may be a higher-preference RIB client that has a matching - // entry, and hence the FIB is unchanged). + // a) the entry may be duplicate for another gRIBI client. + // b) the entry may not be the preferred system route (e.g., there + // may be a higher-preference RIB client that has a matching + // entry, and hence the FIB is unchanged). // // In cases where the FIB was meant to be programmed, but an error // code was received from the underlying hardware abstraction layer @@ -739,6 +739,12 @@ func (FlushResponseError_Reason) EnumDescriptor() ([]byte, []int) { // ModifyRequest is a message used by the client to manipulate the state of // the RIB on the target device. +// +// Within a single ModifyRequest only one of 'operation', 'params' and +// 'election_id' may be specified (see the individual fields for how +// these fields are used). If a client specifies >1 of these fields +// in the same message the server should return an error specifying +// the `INVALID_ARGUMENT` canonical error code. type ModifyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -747,12 +753,12 @@ type ModifyRequest struct { // A group of requests to add/modify/remove a single AFT entry. // // A gRIBI server : - // * Should process AFTOperations per the received order. - // * Should not close the RPC session due to errors encountered in an - // AFTOperation. Invalid AFTOperations should be responded to with - // failures within the stream. - // * May finish pending AFTOperations if existing RPC session is - // dropped/closed/cancelled. + // - Should process AFTOperations per the received order. + // - Should not close the RPC session due to errors encountered in an + // AFTOperation. Invalid AFTOperations should be responded to with + // failures within the stream. + // - May finish pending AFTOperations if existing RPC session is + // dropped/closed/cancelled. Operation []*AFTOperation `protobuf:"bytes,1,rep,name=operation,proto3" json:"operation,omitempty"` // Meta information that the external entity sends to the network // element. If a non default set of parameters is required, then @@ -780,9 +786,10 @@ type ModifyRequest struct { // the session and sets the RPC error code based on status.proto // (http://tinyurl.com/grpc-status-proto) // status.code is set to - // - UNIMPLEMENTED when it encounters an unsupported `persistence` - // or `ack_type` or `redundancy` - // - FAILED_PRECONDITION for the other cases + // - UNIMPLEMENTED when it encounters an unsupported `persistence` + // or `ack_type` or `redundancy` + // - FAILED_PRECONDITION for the other cases + // // status.details is filled with the ModifyRPCErrorDetails message with // an appropriate `reason`. // @@ -814,10 +821,10 @@ type ModifyRequest struct { // without an external election having taken place. // // Upon discovering a failover, the server: - // * SHOULD stop processing pending AFTOperations that were sent by - // the previous primary. - // * MUST not send responses for AFTOperations of the previous primary - // to the acquiring-primary. + // - SHOULD stop processing pending AFTOperations that were sent by + // the previous primary. + // - MUST not send responses for AFTOperations of the previous primary + // to the acquiring-primary. // // Only AFT operations from the primary client are acted upon by // the network element. AFT operations from non-primary clients @@ -839,11 +846,9 @@ type ModifyRequest struct { func (x *ModifyRequest) Reset() { *x = ModifyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModifyRequest) String() string { @@ -854,7 +859,7 @@ func (*ModifyRequest) ProtoMessage() {} func (x *ModifyRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -908,6 +913,7 @@ type AFTOperation struct { NetworkInstance string `protobuf:"bytes,2,opt,name=network_instance,json=networkInstance,proto3" json:"network_instance,omitempty"` Op AFTOperation_Operation `protobuf:"varint,3,opt,name=op,proto3,enum=gribi.AFTOperation_Operation" json:"op,omitempty"` // Types that are assignable to Entry: + // // *AFTOperation_Ipv4 // *AFTOperation_Ipv6 // *AFTOperation_Mpls @@ -920,12 +926,13 @@ type AFTOperation struct { // In SINGLE_PRIMARY redundancy model, used by the server to determine // whether to process the AFTOperation. // The server processes the AFTOperation if - // 1. the election_id in the AFTOperation is equal to the election_id last - // advertised in a ModifyRequest by the client - // AND - // 2. the election_id in the AFTOperation is the highest election_id - // amongst all the election IDs that the server knows about, ie. - // the client is the primary client + // 1. the election_id in the AFTOperation is equal to the election_id last + // advertised in a ModifyRequest by the client + // AND + // 2. the election_id in the AFTOperation is the highest election_id + // amongst all the election IDs that the server knows about, ie. + // the client is the primary client + // // If the election_id in the AFTOperation does not meet these criteria // the server discards the AFTOperation and returns FAILED in AFTResult ElectionId *Uint128 `protobuf:"bytes,11,opt,name=election_id,json=electionId,proto3" json:"election_id,omitempty"` @@ -933,11 +940,9 @@ type AFTOperation struct { func (x *AFTOperation) Reset() { *x = AFTOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AFTOperation) String() string { @@ -948,7 +953,7 @@ func (*AFTOperation) ProtoMessage() {} func (x *AFTOperation) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1135,11 +1140,9 @@ type ModifyResponse struct { func (x *ModifyResponse) Reset() { *x = ModifyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModifyResponse) String() string { @@ -1150,7 +1153,7 @@ func (*ModifyResponse) ProtoMessage() {} func (x *ModifyResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1210,11 +1213,9 @@ type AFTResult struct { func (x *AFTResult) Reset() { *x = AFTResult{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AFTResult) String() string { @@ -1225,7 +1226,7 @@ func (*AFTResult) ProtoMessage() {} func (x *AFTResult) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1281,11 +1282,9 @@ type AFTErrorDetails struct { func (x *AFTErrorDetails) Reset() { *x = AFTErrorDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AFTErrorDetails) String() string { @@ -1296,7 +1295,7 @@ func (*AFTErrorDetails) ProtoMessage() {} func (x *AFTErrorDetails) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1330,11 +1329,9 @@ type ModifyRPCErrorDetails struct { func (x *ModifyRPCErrorDetails) Reset() { *x = ModifyRPCErrorDetails{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModifyRPCErrorDetails) String() string { @@ -1345,7 +1342,7 @@ func (*ModifyRPCErrorDetails) ProtoMessage() {} func (x *ModifyRPCErrorDetails) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1379,11 +1376,9 @@ type SessionParametersResult struct { func (x *SessionParametersResult) Reset() { *x = SessionParametersResult{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionParametersResult) String() string { @@ -1394,7 +1389,7 @@ func (*SessionParametersResult) ProtoMessage() {} func (x *SessionParametersResult) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1427,11 +1422,9 @@ type Uint128 struct { func (x *Uint128) Reset() { *x = Uint128{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Uint128) String() string { @@ -1442,7 +1435,7 @@ func (*Uint128) ProtoMessage() {} func (x *Uint128) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1483,11 +1476,9 @@ type SessionParameters struct { func (x *SessionParameters) Reset() { *x = SessionParameters{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SessionParameters) String() string { @@ -1498,7 +1489,7 @@ func (*SessionParameters) ProtoMessage() {} func (x *SessionParameters) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1544,11 +1535,9 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Empty) String() string { @@ -1559,7 +1548,7 @@ func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1580,6 +1569,7 @@ type GetRequest struct { unknownFields protoimpl.UnknownFields // Types that are assignable to NetworkInstance: + // // *GetRequest_Name // *GetRequest_All NetworkInstance isGetRequest_NetworkInstance `protobuf_oneof:"network_instance"` @@ -1593,11 +1583,9 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRequest) String() string { @@ -1608,7 +1596,7 @@ func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1684,6 +1672,7 @@ type AFTEntry struct { // The network_instance for which the response is being returned. NetworkInstance string `protobuf:"bytes,1,opt,name=network_instance,json=networkInstance,proto3" json:"network_instance,omitempty"` // Types that are assignable to Entry: + // // *AFTEntry_Ipv4 // *AFTEntry_Ipv6 // *AFTEntry_Mpls @@ -1700,11 +1689,9 @@ type AFTEntry struct { func (x *AFTEntry) Reset() { *x = AFTEntry{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AFTEntry) String() string { @@ -1715,7 +1702,7 @@ func (*AFTEntry) ProtoMessage() {} func (x *AFTEntry) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1868,11 +1855,9 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetResponse) String() string { @@ -1883,7 +1868,7 @@ func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1920,6 +1905,7 @@ type FlushRequest struct { // FlushResponseError in the details returned. // // Types that are assignable to Election: + // // *FlushRequest_Id // *FlushRequest_Override Election isFlushRequest_Election `protobuf_oneof:"election"` @@ -1929,6 +1915,7 @@ type FlushRequest struct { // UNSPECIFIED_NETWORK_INSTANCE error code. // // Types that are assignable to NetworkInstance: + // // *FlushRequest_Name // *FlushRequest_All NetworkInstance isFlushRequest_NetworkInstance `protobuf_oneof:"network_instance"` @@ -1936,11 +1923,9 @@ type FlushRequest struct { func (x *FlushRequest) Reset() { *x = FlushRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FlushRequest) String() string { @@ -1951,7 +1936,7 @@ func (*FlushRequest) ProtoMessage() {} func (x *FlushRequest) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2081,11 +2066,9 @@ type FlushResponse struct { func (x *FlushResponse) Reset() { *x = FlushResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FlushResponse) String() string { @@ -2096,7 +2079,7 @@ func (*FlushResponse) ProtoMessage() {} func (x *FlushResponse) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2137,11 +2120,9 @@ type FlushResponseError struct { func (x *FlushResponseError) Reset() { *x = FlushResponseError{} - if protoimpl.UnsafeEnabled { - mi := &file_v1_proto_service_gribi_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_v1_proto_service_gribi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FlushResponseError) String() string { @@ -2152,7 +2133,7 @@ func (*FlushResponseError) ProtoMessage() {} func (x *FlushResponseError) ProtoReflect() protoreflect.Message { mi := &file_v1_proto_service_gribi_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2451,7 +2432,7 @@ func file_v1_proto_service_gribi_proto_rawDescGZIP() []byte { var file_v1_proto_service_gribi_proto_enumTypes = make([]protoimpl.EnumInfo, 11) var file_v1_proto_service_gribi_proto_msgTypes = make([]protoimpl.MessageInfo, 16) -var file_v1_proto_service_gribi_proto_goTypes = []interface{}{ +var file_v1_proto_service_gribi_proto_goTypes = []any{ (AFTType)(0), // 0: gribi.AFTType (AFTOperation_Operation)(0), // 1: gribi.AFTOperation.Operation (AFTResult_Status)(0), // 2: gribi.AFTResult.Status @@ -2545,201 +2526,7 @@ func file_v1_proto_service_gribi_proto_init() { if File_v1_proto_service_gribi_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_v1_proto_service_gribi_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModifyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AFTOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModifyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AFTResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AFTErrorDetails); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModifyRPCErrorDetails); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SessionParametersResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Uint128); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SessionParameters); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Empty); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AFTEntry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlushRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlushResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_v1_proto_service_gribi_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlushResponseError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_v1_proto_service_gribi_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_v1_proto_service_gribi_proto_msgTypes[1].OneofWrappers = []any{ (*AFTOperation_Ipv4)(nil), (*AFTOperation_Ipv6)(nil), (*AFTOperation_Mpls)(nil), @@ -2748,11 +2535,11 @@ func file_v1_proto_service_gribi_proto_init() { (*AFTOperation_MacEntry)(nil), (*AFTOperation_PolicyForwardingEntry)(nil), } - file_v1_proto_service_gribi_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_v1_proto_service_gribi_proto_msgTypes[10].OneofWrappers = []any{ (*GetRequest_Name)(nil), (*GetRequest_All)(nil), } - file_v1_proto_service_gribi_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_v1_proto_service_gribi_proto_msgTypes[11].OneofWrappers = []any{ (*AFTEntry_Ipv4)(nil), (*AFTEntry_Ipv6)(nil), (*AFTEntry_Mpls)(nil), @@ -2761,7 +2548,7 @@ func file_v1_proto_service_gribi_proto_init() { (*AFTEntry_MacEntry)(nil), (*AFTEntry_PolicyForwardingEntry)(nil), } - file_v1_proto_service_gribi_proto_msgTypes[13].OneofWrappers = []interface{}{ + file_v1_proto_service_gribi_proto_msgTypes[13].OneofWrappers = []any{ (*FlushRequest_Id)(nil), (*FlushRequest_Override)(nil), (*FlushRequest_Name)(nil), diff --git a/v1/proto/service/gribi_grpc.pb.go b/v1/proto/service/gribi_grpc.pb.go index eed00a7..1e998ee 100644 --- a/v1/proto/service/gribi_grpc.pb.go +++ b/v1/proto/service/gribi_grpc.pb.go @@ -1,7 +1,21 @@ +// Copyright 2020 The OpenConfig Contributors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.0--rc1 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.28.2 // source: v1/proto/service/gribi.proto package gribi @@ -15,19 +29,28 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + GRIBI_Modify_FullMethodName = "/gribi.gRIBI/Modify" + GRIBI_Get_FullMethodName = "/gribi.gRIBI/Get" + GRIBI_Flush_FullMethodName = "/gribi.gRIBI/Flush" +) // GRIBIClient is the client API for GRIBI service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// gRIBI is a gRPC service which provides an external entity a mechanism through +// which to programmatically inject and remove entries from the system's RIB. type GRIBIClient interface { // Modify provides a bidirectional streaming RPC that can be used to issue // modifications to the AFT in the form of ModifyRequest(s). // The network element responds (asynchronously) with a ModifyResponse // for each ModifyRequest indicating what action was taken, once each // Operation within the request has been completed. - Modify(ctx context.Context, opts ...grpc.CallOption) (GRIBI_ModifyClient, error) + Modify(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ModifyRequest, ModifyResponse], error) // Get provides a client a means to retrieve the contents of the installed // AFTs from the gRIBI daemon. The client requests a Get, and the server // responds with the set of currently installed entries (that have been ACK'd @@ -37,7 +60,7 @@ type GRIBIClient interface { // // The Get RPC is typically used to allow reconcilation between a client and // a server or for periodical consistency checking. - Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (GRIBI_GetClient, error) + Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetResponse], error) // Flush allows a client to remove all entries currently installed on the // server via gRIBI. The client requests a Flush, and the server removes all // entries that match the context described by the FlushRequest. @@ -52,43 +75,26 @@ func NewGRIBIClient(cc grpc.ClientConnInterface) GRIBIClient { return &gRIBIClient{cc} } -func (c *gRIBIClient) Modify(ctx context.Context, opts ...grpc.CallOption) (GRIBI_ModifyClient, error) { - stream, err := c.cc.NewStream(ctx, &GRIBI_ServiceDesc.Streams[0], "/gribi.gRIBI/Modify", opts...) +func (c *gRIBIClient) Modify(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ModifyRequest, ModifyResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &GRIBI_ServiceDesc.Streams[0], GRIBI_Modify_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &gRIBIModifyClient{stream} + x := &grpc.GenericClientStream[ModifyRequest, ModifyResponse]{ClientStream: stream} return x, nil } -type GRIBI_ModifyClient interface { - Send(*ModifyRequest) error - Recv() (*ModifyResponse, error) - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GRIBI_ModifyClient = grpc.BidiStreamingClient[ModifyRequest, ModifyResponse] -type gRIBIModifyClient struct { - grpc.ClientStream -} - -func (x *gRIBIModifyClient) Send(m *ModifyRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *gRIBIModifyClient) Recv() (*ModifyResponse, error) { - m := new(ModifyResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *gRIBIClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (GRIBI_GetClient, error) { - stream, err := c.cc.NewStream(ctx, &GRIBI_ServiceDesc.Streams[1], "/gribi.gRIBI/Get", opts...) +func (c *gRIBIClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &GRIBI_ServiceDesc.Streams[1], GRIBI_Get_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &gRIBIGetClient{stream} + x := &grpc.GenericClientStream[GetRequest, GetResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -98,26 +104,13 @@ func (c *gRIBIClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.Call return x, nil } -type GRIBI_GetClient interface { - Recv() (*GetResponse, error) - grpc.ClientStream -} - -type gRIBIGetClient struct { - grpc.ClientStream -} - -func (x *gRIBIGetClient) Recv() (*GetResponse, error) { - m := new(GetResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GRIBI_GetClient = grpc.ServerStreamingClient[GetResponse] func (c *gRIBIClient) Flush(ctx context.Context, in *FlushRequest, opts ...grpc.CallOption) (*FlushResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(FlushResponse) - err := c.cc.Invoke(ctx, "/gribi.gRIBI/Flush", in, out, opts...) + err := c.cc.Invoke(ctx, GRIBI_Flush_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -126,14 +119,17 @@ func (c *gRIBIClient) Flush(ctx context.Context, in *FlushRequest, opts ...grpc. // GRIBIServer is the server API for GRIBI service. // All implementations must embed UnimplementedGRIBIServer -// for forward compatibility +// for forward compatibility. +// +// gRIBI is a gRPC service which provides an external entity a mechanism through +// which to programmatically inject and remove entries from the system's RIB. type GRIBIServer interface { // Modify provides a bidirectional streaming RPC that can be used to issue // modifications to the AFT in the form of ModifyRequest(s). // The network element responds (asynchronously) with a ModifyResponse // for each ModifyRequest indicating what action was taken, once each // Operation within the request has been completed. - Modify(GRIBI_ModifyServer) error + Modify(grpc.BidiStreamingServer[ModifyRequest, ModifyResponse]) error // Get provides a client a means to retrieve the contents of the installed // AFTs from the gRIBI daemon. The client requests a Get, and the server // responds with the set of currently installed entries (that have been ACK'd @@ -143,7 +139,7 @@ type GRIBIServer interface { // // The Get RPC is typically used to allow reconcilation between a client and // a server or for periodical consistency checking. - Get(*GetRequest, GRIBI_GetServer) error + Get(*GetRequest, grpc.ServerStreamingServer[GetResponse]) error // Flush allows a client to remove all entries currently installed on the // server via gRIBI. The client requests a Flush, and the server removes all // entries that match the context described by the FlushRequest. @@ -151,20 +147,24 @@ type GRIBIServer interface { mustEmbedUnimplementedGRIBIServer() } -// UnimplementedGRIBIServer must be embedded to have forward compatible implementations. -type UnimplementedGRIBIServer struct { -} +// UnimplementedGRIBIServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedGRIBIServer struct{} -func (UnimplementedGRIBIServer) Modify(GRIBI_ModifyServer) error { +func (UnimplementedGRIBIServer) Modify(grpc.BidiStreamingServer[ModifyRequest, ModifyResponse]) error { return status.Errorf(codes.Unimplemented, "method Modify not implemented") } -func (UnimplementedGRIBIServer) Get(*GetRequest, GRIBI_GetServer) error { +func (UnimplementedGRIBIServer) Get(*GetRequest, grpc.ServerStreamingServer[GetResponse]) error { return status.Errorf(codes.Unimplemented, "method Get not implemented") } func (UnimplementedGRIBIServer) Flush(context.Context, *FlushRequest) (*FlushResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Flush not implemented") } func (UnimplementedGRIBIServer) mustEmbedUnimplementedGRIBIServer() {} +func (UnimplementedGRIBIServer) testEmbeddedByValue() {} // UnsafeGRIBIServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to GRIBIServer will @@ -174,55 +174,33 @@ type UnsafeGRIBIServer interface { } func RegisterGRIBIServer(s grpc.ServiceRegistrar, srv GRIBIServer) { + // If the following call pancis, it indicates UnimplementedGRIBIServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&GRIBI_ServiceDesc, srv) } func _GRIBI_Modify_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GRIBIServer).Modify(&gRIBIModifyServer{stream}) -} - -type GRIBI_ModifyServer interface { - Send(*ModifyResponse) error - Recv() (*ModifyRequest, error) - grpc.ServerStream -} - -type gRIBIModifyServer struct { - grpc.ServerStream + return srv.(GRIBIServer).Modify(&grpc.GenericServerStream[ModifyRequest, ModifyResponse]{ServerStream: stream}) } -func (x *gRIBIModifyServer) Send(m *ModifyResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *gRIBIModifyServer) Recv() (*ModifyRequest, error) { - m := new(ModifyRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GRIBI_ModifyServer = grpc.BidiStreamingServer[ModifyRequest, ModifyResponse] func _GRIBI_Get_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(GetRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(GRIBIServer).Get(m, &gRIBIGetServer{stream}) + return srv.(GRIBIServer).Get(m, &grpc.GenericServerStream[GetRequest, GetResponse]{ServerStream: stream}) } -type GRIBI_GetServer interface { - Send(*GetResponse) error - grpc.ServerStream -} - -type gRIBIGetServer struct { - grpc.ServerStream -} - -func (x *gRIBIGetServer) Send(m *GetResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GRIBI_GetServer = grpc.ServerStreamingServer[GetResponse] func _GRIBI_Flush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(FlushRequest) @@ -234,7 +212,7 @@ func _GRIBI_Flush_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gribi.gRIBI/Flush", + FullMethod: GRIBI_Flush_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GRIBIServer).Flush(ctx, req.(*FlushRequest)) diff --git a/v1/yang/aft/openconfig-aft-common.yang b/v1/yang/aft/openconfig-aft-common.yang index 711a4b7..50eac8d 100644 --- a/v1/yang/aft/openconfig-aft-common.yang +++ b/v1/yang/aft/openconfig-aft-common.yang @@ -23,7 +23,46 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-09-05" { + description + "Add encap-headers to AFT model."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry. Updated description for + tunnel-src-ip-address properties under next-hops."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -148,6 +187,7 @@ submodule openconfig-aft-common { list next-hop { key "index"; + oc-ext:telemetry-atomic; description "A next-hop associated with the forwarding instance."; @@ -183,14 +223,186 @@ submodule openconfig-aft-common { container ip-in-ip { description - "When specified, the packet has an IP-in-IP header applied to it before - forwarding to the specified next-hop."; + "When specified, the packet has an IP-in-IP header applied to it + before forwarding to the specified next-hop. + + This node must be supported in addition to the + encap-headers/encap-header tree. A future release of OpenConfig + will deprecate this node in favor of the + encap-headers/encap-header subtree."; container state { config false; description "State parameters relating to IP-in-IP encapsulation."; - uses aft-common-entry-nexthop-ipip-state; + + uses aft-common-entry-nexthop-ip-state; + } + } + + container gre { + description + "When specified, the packet has an GRE + (Generic Routing Encapsulation) header applied to + it before forwarding to the specified next-hop. + encapsulate-header leaf should be set to GRE for this + to apply. + + This node must be supported in addition to the + encap-headers/encap-header tree. A future release of OpenConfig + will deprecate this node in favor of the + encap-headers/encap-header subtree."; + + container state { + config false; + description + "State parameters relating to GRE encapsulation."; + + uses aft-common-entry-nexthop-gre-state; + } + } + + container encap-headers { + description + "Container for packet encapsulation headers. When leaves in this + container are populated, it indicates encapsulation of the packet + matching the next-hop is performed using a stack of one or more + headers defined in the list encap-header. + + Each entry in the list must indicate an encapsulation type and + populate a container with the parameters for that encapsulation + header."; + + list encap-header { + description + "A list of headers added on top of a packet ordered by the + index value. The inner-most header is the 0th value and is + adjacent to the original packet. Additional headers may be + added in index order. + + For example, in an encapsulation stack for MPLS in UDPv4, the + first index in the list is the MPLS header and the second + index is a UDPv4 header."; + + key "index"; + + leaf index { + type leafref { + path "../state/index"; + } + description + "A unique index identifying an encapsulation header in a stack + of encapsulation headers."; + } + + container state { + description + "State parameters relating to encapsulation headers."; + + uses aft-common-nexthop-encap-headers-state; + } + + container gre { + when "../state/type = 'oc-aftt:GRE'"; + description + "Container of nodes for GRE encapsulation."; + + container state { + description + "State parameters relating to GRE encapsulation headers."; + + uses aft-common-entry-nexthop-gre-state; + } + } + + container ipv4 { + when "../state/type = 'oc-aftt:IPV4'"; + description + "Container of nodes for UDP in IPv4 encapsulation. When this + container is used, an IPv4 packet with no transport header + is added to the encapsulation list."; + + container state { + description + "State parameters relating to IP encapsulation headers."; + + uses aft-common-entry-nexthop-ip-state; + } + } + + container ipv6 { + when "../state/type = 'oc-aftt:IPV6'"; + description + "Container of nodes for UDP in IPv6 encapsulation. When this + container is used, an IPv6 packet with no transport header + is added to the encapsulation list."; + + container state { + description + "State parameters relating to IP encapsulation headers."; + + uses aft-common-entry-nexthop-ip-state; + } + } + + container mpls { + when "../state/type = 'oc-aftt:MPLS'"; + description + "Container of nodes for MPLS encapsulation."; + + container state { + description + "State parameters relating to MPLS encapsulation headers."; + + uses aft-common-entry-nexthop-mpls-state; + } + } + + container udp-v4 { + when "../state/type = 'oc-aftt:UDPV4'"; + description + "Container of nodes for UDP in IPv4 encapsulation. When this + container is used, an IPv4 header with a UDP header is added + to the encapsulation list."; + + container state { + description + "State parameters relating to UDP in IPv4 encapsulation + headers."; + + uses aft-common-entry-nexthop-encap-udp-state; + } + } + + container udp-v6 { + when "../state/type = 'oc-aftt:UDPV6'"; + description + "Container of nodes for UDP in IPv6 encapsulation. When this + container is used, an IPv6 header with a UDP header is added + to the encapsulation list."; + + container state { + description + "State parameters relating to UDP in IPv6 encapsulation + headers."; + + uses aft-common-entry-nexthop-encap-udp-state; + } + } + + container vxlan { + when "../state/type = 'oc-aftt:VXLAN'"; + description + "Container of nodes for VXLAN encapsulation."; + + container state { + description + "State parameters relating to VXLAN encapsulation headers."; + + uses aft-common-entry-nexthop-vxlan-state; + } + } + } } @@ -199,6 +411,24 @@ submodule openconfig-aft-common { } } + grouping aft-common-nexthop-encap-headers-state { + description + "Operational state parameters relating to encapsulation headers."; + + leaf index { + type uint8; + description + "A pointer to an entry in an ordered list of encapsulation headers."; + } + + leaf type { + type oc-aftt:encapsulation-header-type; + description + "Defines which type of packet header should be used."; + } + + } + grouping aft-common-entry-state { description "Operational state parameters relating to a forwarding entry"; @@ -244,14 +474,24 @@ submodule openconfig-aft-common { "Where applicable, the next hop label representing the virtual network identifier (VNI) for the forwarding entry. This leaf is applicable only to next-hops which include VXLAN encapsulation - header information"; + header information. + + This node must be supported in addition to the + encap-headers/encap-header tree. A future release of OpenConfig + will deprecate this node in favor of the + encap-headers/encap-header subtree."; } leaf tunnel-src-ip-address { type oc-inet:ip-address; description - "Where applicable this represents the tunnel source ip address. - For VXLAN this represents the source VTEP ip address"; + "Where applicable this represents the vxlan tunnel source ip address. + For VXLAN this represents the source VTEP IP address. + + This node must be supported in addition to the + encap-headers/encap-header tree. A future release of OpenConfig + will deprecate this node in favor of the + encap-headers/encap-header subtree."; } } @@ -298,7 +538,7 @@ submodule openconfig-aft-common { default false; description "Flag that controls pop action, i.e., the top-most MPLS label - should be popped from the packet when switched by the system. + should be popped from the packet when switched by the system. The top-most MPLS label associated with pop action is equal to the label key used in 'mpls' AFT 'label-entry' list."; @@ -322,8 +562,12 @@ submodule openconfig-aft-common { system re-ordering of leaves is permitted by the system. A swap operation is reflected by entries in the - popped-mpls-label-stack and pushed-mpls-label-stack nodes."; + popped-mpls-label-stack and pushed-mpls-label-stack nodes. + This node must be supported in addition to the + encap-headers/encap-header tree. A future release of OpenConfig + will deprecate this node in favor of the + encap-headers/encap-header subtree."; } leaf encapsulate-header { @@ -331,7 +575,12 @@ submodule openconfig-aft-common { description "When forwarding a packet to the specified next-hop the local system performs an encapsulation of the packet - adding the - specified header type."; + specified header type. + + This node must be supported in addition to the + encap-headers/encap-header tree. A future release of OpenConfig + will deprecate this node in favor of the + encap-headers/encap-header subtree."; } leaf decapsulate-header { @@ -349,9 +598,9 @@ submodule openconfig-aft-common { uses aft-common-install-protocol; } - grouping aft-common-entry-nexthop-ipip-state { + grouping aft-common-entry-nexthop-ip-state { description - "IP-in-IP encapsulation applied on a next-hop"; + "IP encapsulation applied on a next-hop"; leaf src-ip { type oc-inet:ip-address; @@ -366,6 +615,143 @@ submodule openconfig-aft-common { } } + grouping aft-common-entry-nexthop-gre-state { + description + "GRE encapsulation applied on a IPv4 and IPv6 next-hop."; + + leaf src-ip { + type oc-inet:ip-address; + description + "The source IP address for the GRE encapsulation may be expressed + using this leaf (src-ip) or if may be derived from + '../../interface-ref/state/subinterface'"; + } + + leaf dst-ip { + type oc-inet:ip-address; + description + "Destination IP address to use for the encapsulated packet."; + } + + leaf ttl { + type uint8; + description + "This leaf reflects the configured/default TTL value that is used in the + outer header during packet encapsulation. When this leaf is not set, + the TTL value of the inner packet is copied over as the outer packet's + TTL value during encapsulation."; + } + } + + grouping aft-common-entry-nexthop-mpls-state { + description + "MPLS encapsulation of a packet."; + + leaf traffic-class { + type oc-mplst:mpls-tc; + description + "The value of the MPLS traffic class (TC) bits, formerly known as the + EXP bits."; + } + + leaf-list mpls-label-stack { + type oc-mplst:mpls-label; + ordered-by user; + description + "A stack of MPLS label values. The first entry in the list is the + label at the bottom of the stack. The bottom of the stack is adjacent + to the MPLS payload. + + For example, a packet with a label stack of two labels, the bottom + label being 42 and the top label being 8072 will be represented with + a leaf-list of [42, 8072]. The resulting packet, starting with the + beginning of the packet will be '[8072][42][Payload]'. + + Note: a swap operation is reflected by entries in the + popped-mpls-label-stack and the pushed-mpls-label-stack"; + } + } + + + grouping aft-common-entry-nexthop-encap-udp-state { + description + "UDP encapsulation applied on top of a packet."; + + leaf src-ip { + type oc-inet:ip-address; + description + "The source IP address for IP/UDP encapsulation."; + } + + leaf dst-ip { + type oc-inet:ip-address; + description + "Destination IP address for IP/UDP encapsulation."; + } + + leaf dscp { + type oc-inet:dscp; + description + "DSCP value to use for the UDP header of the encapsulated + packet."; + } + + leaf src-udp-port { + type oc-inet:port-number; + description + "Source UDP port number to use for the UDP header of the encapsulated + packet. The source UDP port should be derived from the payload + packet entropy. The exact methodology is implementation dependent, + but for example, the port could be derived from an entropy hash of + the payload or the source port (if present) of the payload."; + } + + leaf dst-udp-port { + type oc-inet:port-number; + description + "Source UDP port number to use for the UDP header of the encapsulated + packet. + + When the payload packet is MPLS, then RFC 7510 - Encapsulating MPLS + in UDP should be followed."; + reference + "RFC 7510 - Encapsulating MPLS in UDP specifies that 6635 must be + used for MPLS-in-UDP and 6636 must be used for MPLS-in-UDP with DTLS. + Because of this condition, no default is defined in OpenConfig. The + system is expected to utilize the appropriate port."; + } + + leaf ip-ttl { + type uint8; + description + "This leaf reflects the configured/default IP TTL value that is used + in the outer header during packet encapsulation. When this leaf is + not set, the TTL value of the inner packet is copied over as the + outer packet's IP TTL value during encapsulation."; + } + } + + grouping aft-common-entry-nexthop-vxlan-state { + description + "VXLAN encapsulation applied on top of a packet."; + + leaf vni-label { + type oc-evpn-types:evi-id; + description + "Where applicable, the next hop label representing the virtual + network identifier (VNI) for the forwarding entry. This leaf is + applicable only to next-hops which include VXLAN encapsulation + header information"; + } + + leaf tunnel-src-ip-address { + type oc-inet:ip-address; + description + "Where applicable this represents the vxlan tunnel source ip address. + For VXLAN this represents the source VTEP ip address"; + } + } + grouping aft-common-install-protocol { description "Grouping for a common reference to the protocol which @@ -411,6 +797,7 @@ submodule openconfig-aft-common { list next-hop-group { key "id"; + oc-ext:telemetry-atomic; description "An individual set of next-hops grouped into a common group. Each entry within an abstract forwarding table points to a @@ -565,6 +952,14 @@ submodule openconfig-aft-common { also be updated."; } + leaf next-hop-group-name { + type string; + description + "Where applicable, this leaf is a unique identifier string for the + next-hop-group. It is an arbitrary name for the group, that is + supported by vendors and is exposed for telemetry."; + } + leaf programmed-id { type uint64; description @@ -612,6 +1007,20 @@ submodule openconfig-aft-common { entries within the next-hop group become unusable, the backup next-hop group is used if specified."; } + + leaf backup-active { + type boolean; + default false; + description + "Set to true if and only if the device no longer forwards traffic + using the primary NextHops of this NextHopGroup and instead uses + the specified backup-next-hop-group. This leaf should be set to + false if the backup-next-hop-group is either unspecified or unused + by the device."; + } + + + } grouping aft-nhg-nh-state { diff --git a/v1/yang/aft/openconfig-aft-ethernet.yang b/v1/yang/aft/openconfig-aft-ethernet.yang index 3a3af39..3fbe6ed 100644 --- a/v1/yang/aft/openconfig-aft-ethernet.yang +++ b/v1/yang/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,45 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-07-18" { + description + "Add container for mpls-in-udp under next-hops aft entry state."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -131,6 +169,7 @@ submodule openconfig-aft-ethernet { list mac-entry { key "mac-address"; + oc-ext:telemetry-atomic; description "List of the Ethernet entries within the abstract forwarding table. This list is keyed by the outer MAC address diff --git a/v1/yang/aft/openconfig-aft-ipv4.yang b/v1/yang/aft/openconfig-aft-ipv4.yang index 2cf339f..87fb7e6 100644 --- a/v1/yang/aft/openconfig-aft-ipv4.yang +++ b/v1/yang/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,45 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-09-05" { + description + "Add encapsulate-stack under aft next-hops."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -130,6 +168,7 @@ submodule openconfig-aft-ipv4 { list ipv4-entry { key "prefix"; + oc-ext:telemetry-atomic; description "List of the IPv4 unicast entries within the abstract forwarding table. This list is keyed by the destination IPv4 diff --git a/v1/yang/aft/openconfig-aft-ipv6.yang b/v1/yang/aft/openconfig-aft-ipv6.yang index ea979f2..765830c 100644 --- a/v1/yang/aft/openconfig-aft-ipv6.yang +++ b/v1/yang/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,45 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-07-18" { + description + "Add container for mpls-in-udp under next-hops aft entry state."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -131,6 +169,7 @@ submodule openconfig-aft-ipv6 { list ipv6-entry { key "prefix"; + oc-ext:telemetry-atomic; description "List of the IPv6 unicast entries within the abstract forwarding table. This list is keyed by the destination IPv6 diff --git a/v1/yang/aft/openconfig-aft-mpls.yang b/v1/yang/aft/openconfig-aft-mpls.yang index bfee47c..c99e1c5 100644 --- a/v1/yang/aft/openconfig-aft-mpls.yang +++ b/v1/yang/aft/openconfig-aft-mpls.yang @@ -21,7 +21,37 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-09-05" { + description + "Add encapsulate-stack under aft next-hops."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.5.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -132,6 +162,7 @@ submodule openconfig-aft-mpls { list label-entry { key "label"; + oc-ext:telemetry-atomic; description "List of the MPLS entries within the abstract forwarding table. This list is keyed by the top-most MPLS diff --git a/v1/yang/aft/openconfig-aft-pf.yang b/v1/yang/aft/openconfig-aft-pf.yang index fe107bc..9980ad5 100644 --- a/v1/yang/aft/openconfig-aft-pf.yang +++ b/v1/yang/aft/openconfig-aft-pf.yang @@ -28,7 +28,45 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-07-18" { + description + "Add container for mpls-in-udp under next-hops aft entry state."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -139,6 +177,7 @@ submodule openconfig-aft-pf { list policy-forwarding-entry { key "index"; + oc-ext:telemetry-atomic; description "List of the policy forwarding entries within the abstract forwarding table. Each entry is uniquely identified by an diff --git a/v1/yang/aft/openconfig-aft-state-synced.yang b/v1/yang/aft/openconfig-aft-state-synced.yang new file mode 100644 index 0000000..fbe6eb5 --- /dev/null +++ b/v1/yang/aft/openconfig-aft-state-synced.yang @@ -0,0 +1,93 @@ +submodule openconfig-aft-state-synced { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the state + synced signals corresponding to various abstract forwarding tables."; + + oc-ext:openconfig-version "2.7.0"; + + revision "2024-07-18" { + description + "Add container for mpls-in-udp under next-hops aft entry state."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } + + grouping aft-state-synced-structural { + description + "Structural grouping defining the schema for the state synced signals + of various abstract forwarding table."; + + container state { + config false; + description + "Operational state parameters relating to the state + synced signals of various AFTs."; + + leaf ipv4-unicast { + type boolean; + default false; + description + "State synced signal indicating consistent device snapshot of + IPv4 unicast AFT entries. Before setting this flag to true + next-hop-groups and next-hops AFT entries, associated with + ipv4-unicast AFT entries, are expected to be consistent with + device snapshot."; + } + + leaf ipv6-unicast { + type boolean; + default false; + description + "State synced signal indicating consistent device snapshot of + IPv6 unicast AFT entries. Before setting this flag to true + next-hop-groups and next-hops AFT entries, associated with + ipv6-unicast AFT entries, are expected to be consistent with + device snapshot."; + } + } + } +} diff --git a/v1/yang/aft/openconfig-aft-types.yang b/v1/yang/aft/openconfig-aft-types.yang index 4b7fc8f..56d920b 100644 --- a/v1/yang/aft/openconfig-aft-types.yang +++ b/v1/yang/aft/openconfig-aft-types.yang @@ -16,7 +16,13 @@ module openconfig-aft-types { "Types related to the OpenConfig Abstract Forwarding Table (AFT) model"; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2024-07-18" { + description + "Add MPLS in UDP enums for encapsulate-header."; + reference "1.2.0"; + } revision "2022-05-05" { description @@ -89,6 +95,10 @@ module openconfig-aft-types { description "The encapsulation header is a VXLAN packet header"; } + enum UDP { + description + "The encapsulation header is UDP packet header."; + } } description "Types of tunnel encapsulation that are supported by systems as either diff --git a/v1/yang/aft/openconfig-aft.yang b/v1/yang/aft/openconfig-aft.yang index 0c1ce9d..de3ce20 100644 --- a/v1/yang/aft/openconfig-aft.yang +++ b/v1/yang/aft/openconfig-aft.yang @@ -20,6 +20,8 @@ module openconfig-aft { include openconfig-aft-ethernet; // Include the common cross-AFT entities. include openconfig-aft-common; + // Include the state synced submodule. + include openconfig-aft-state-synced; organization "OpenConfig working group"; @@ -40,7 +42,45 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.7.0"; + + revision "2024-09-05" { + description + "Add encapsulate-stack under aft next-hops."; + reference "2.7.0"; + } + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -190,10 +230,11 @@ module openconfig-aft { destination prefix which is matched by ingress packets. The data set represented by the IPv6 Unicast AFTis the set - of entries within the IPv6 RIB that "; + of entries within the IPv6 unicast RIB that have been + selected for installation into the FIB of the device + exporting the data structure."; uses aft-ipv6-unicast-structural; - } container policy-forwarding { @@ -232,6 +273,27 @@ module openconfig-aft { uses aft-ethernet-structural; } + container state-synced { + description + "In some cases AFT streaming (e.g., over gNMI) is an eventually consistent system. + When the device updates an entry it is usually expected to + stream an update to the client within a vert short amount + of time (few milliseconds). Given this is the casee, a telemetry collector or a + controller that parse the AFT doesn't have a consistent + snapshot, or overall versioned copy of AFT with the device + at any specific point of time. + + In certain failure modes like device boot up, gNMI daemon + failure and device/routing engine stateful switchover + a telemetry collector or a controller need a flag to + determine whether it is in consistent with the device or + not such that it can a corrective action when needed. + A device sets this leaf or flag to indicate to the + client that AFT data/view is consistent."; + + uses aft-state-synced-structural; + } + uses aft-next-hop-groups-structural; uses aft-nhop-structural; } diff --git a/v1/yang/deps/openconfig-mpls-types.yang b/v1/yang/deps/openconfig-mpls-types.yang index 6cba7dd..765e467 100644 --- a/v1/yang/deps/openconfig-mpls-types.yang +++ b/v1/yang/deps/openconfig-mpls-types.yang @@ -19,7 +19,20 @@ module openconfig-mpls-types { description "General types for MPLS / TE data model"; - oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-12-14" { + description + "Added additional attributes oc-if:interface-ref + and metric attributes to static lsp"; + reference "3.5.0"; + } + + revision "2021-12-01" { + description + "Add new identity for RSVP authentication types"; + reference "3.4.0"; + } revision "2021-06-16" { description @@ -286,7 +299,7 @@ module openconfig-mpls-types { "LSP is administratively up"; } - identity NULL_LABEL_TYPE { + identity NULL_LABEL_TYPE { description "Base identity from which specific null-label types are derived."; @@ -353,10 +366,10 @@ module openconfig-mpls-types { reference "IANA PWE3 0x0005"; } -identity PATH_METRIC_TYPE { - description - "Base identity for path metric type."; -} + identity PATH_METRIC_TYPE { + description + "Base identity for path metric type."; + } identity TE_METRIC { base PATH_METRIC_TYPE; @@ -398,6 +411,19 @@ identity PATH_METRIC_TYPE { Communication Protocol (PCEP)."; } + identity RSVP_AUTH_TYPE { + description + "Base identity for RSVP message authentication types"; + reference + "RFC2747: RSVP Cryptographic Authentication"; + } + + identity RSVP_AUTH_MD5 { + base RSVP_AUTH_TYPE; + description + "HMAC-MD5 message authentication"; + } + // typedef statements typedef mpls-label { type union { diff --git a/v1/yang/deps/openconfig-platform-types.yang b/v1/yang/deps/openconfig-platform-types.yang new file mode 100644 index 0000000..88b0ef5 --- /dev/null +++ b/v1/yang/deps/openconfig-platform-types.yang @@ -0,0 +1,608 @@ +module openconfig-platform-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform-types"; + + prefix "oc-platform-types"; + + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data types (e.g., YANG identities) + to support the OpenConfig component inventory model."; + + oc-ext:openconfig-version "1.8.0"; + + + revision "2024-04-30" { + description + "Add FAN_TRAY"; + reference "1.8.0"; + } + + revision "2024-01-30" { + description + "Add component-last-poweroff-reason grouping"; + reference "1.7.0"; + } + + revision "2023-06-27" { + description + "Add WIFI_ACCESS_POINT"; + reference "1.6.0"; + } + + revision "2022-07-28" { + description + "Add grouping for component power management"; + reference "1.5.0"; + } + + revision "2022-03-27" { + description + "Add identity for BIOS"; + reference "1.4.0"; + } + + revision "2022-02-02" { + description + "Add support for component reboot and switchover."; + reference "1.3.0"; + } + + revision "2021-07-29" { + description + "Add several avg-min-max-instant-stats groupings"; + reference "1.2.0"; + } + + revision "2021-01-18" { + description + "Add identity for software modules"; + reference "1.1.0"; + } + + revision "2019-06-03" { + description + "Add OpenConfig component operating system patch type."; + reference "1.0.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.10.1"; + } + + revision "2018-11-16" { + description + "Added FEC_MODE_TYPE and FEC_STATUS_TYPE"; + reference "0.10.0"; + } + + revision "2018-05-05" { + description + "Added min-max-time to + avg-min-max-instant-stats-precision1-celsius, + added new CONTROLLER_CARD identity"; + reference "0.9.0"; + } + + revision "2018-01-16" { + description + "Added new per-component common data; add temp alarm"; + reference "0.8.0"; + } + + revision "2017-12-14" { + description + "Added anchor containers for component data, added new + component types"; + reference "0.7.0"; + } + + revision "2017-08-16" { + description + "Added power state enumerated type"; + reference "0.6.0"; + } + + revision "2016-12-22" { + description + "Added temperature state variable to component"; + reference "0.5.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + grouping avg-min-max-instant-stats-precision1-celsius { + description + "Common grouping for recording temperature values in + Celsius with 1 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics"; + + leaf instant { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The arithmetic mean value of the statistic over the + sampling period."; + } + + leaf min { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The minimum value of the statistic over the sampling + period"; + } + + leaf max { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The maximum value of the statistic over the sampling + period"; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping avg-min-max-instant-stats-precision2-volts { + description + "Common grouping for recording voltage values in + volts with 2 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + If supported by the device, the time interval over which + the statistics are computed, and the times at which the + minimum and maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The arithmetic mean value of the statistic over the + sampling period."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The minimum value of the statistic over the sampling + period"; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The maximum value of the statistic over the sampling + period"; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping component-last-poweroff-reason { + description + "Common grouping for recording the reason of a component's + power-off state"; + + leaf trigger { + type component-last-poweroff-reason-trigger; + description + "Records the generic triggers for the last poweroff + event. Component power-off can be triggered + in various ways, + - USER_INITIATED + - SYSTEM_INITIATED + - POWER_FAILURE + This field is not updated during reboots; those are + tracked in the 'last-reboot-reason' leaf."; + } + + leaf details { + type string; + description + "Provides a detailed reason for component power-off. + For system-initiated power-offs, this field can include + specific causes (e.g., critical errors resulting in a + controller-card bootloop)."; + } + } + + grouping component-redundant-role-switchover-reason { + description + "Common grouping for recording the reason of a component's + redundant role switchover. For example two supervisors in + a device, one as primary the other as secondary, switchover + can happen in different scenarios, e.g. user requested, + system error, priority contention, etc."; + + leaf trigger { + type component-redundant-role-switchover-reason-trigger; + description + "Records the generic triggers, e.g. user or system + initiated the switchover."; + } + + leaf details { + type string; + description + "Records detailed description of why the switchover happens. + For example, when system initiated the switchover, this leaf + can be used to record the specific reason, e.g. due to critical + errors of the routing daemon in the primary role."; + } + } + + // identity statements + identity OPENCONFIG_HARDWARE_COMPONENT { + description + "Base identity for hardware related components in a managed + device. Derived identities are partially based on contents + of the IANA Entity MIB."; + reference + "IANA Entity MIB and RFC 6933"; + } + + identity OPENCONFIG_SOFTWARE_COMPONENT { + description + "Base identity for software-related components in a managed + device"; + } + + // hardware types + identity CHASSIS { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Chassis component, typically with multiple slots / shelves"; + } + + identity BACKPLANE { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Backplane component for aggregating traffic, typically + contained in a chassis component"; + } + + identity FABRIC { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Interconnect between ingress and egress ports on the + device (e.g., a crossbar switch)."; + } + + identity POWER_SUPPLY { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Component that is supplying power to the device"; + } + + identity FAN { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Cooling fan, or could be some other heat-reduction component"; + } + + identity FAN_TRAY { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Contains multiple fans that work in unison to cool the router components."; + } + + identity SENSOR { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Physical sensor, e.g., a temperature sensor in a chassis"; + } + + identity FRU { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Replaceable hardware component that does not have a more + specific defined schema."; + } + + identity LINECARD { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Linecard component, typically inserted into a chassis slot"; + } + + identity CONTROLLER_CARD { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A type of linecard whose primary role is management or control + rather than data forwarding."; + } + + identity PORT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Physical port, e.g., for attaching pluggables and networking + cables"; + } + + identity TRANSCEIVER { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Pluggable module present in a port"; + } + + identity CPU { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Processing unit, e.g., a management processor"; + } + + identity STORAGE { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A storage subsystem on the device (disk, SSD, etc.)"; + } + + identity INTEGRATED_CIRCUIT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A special purpose processing unit, typically for traffic + switching/forwarding (e.g., switching ASIC, NPU, forwarding + chip, etc.)"; + } + + identity WIFI_ACCESS_POINT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A device that attaches to a an Ethernet network and creates a wireless + local area network"; + } + + identity OPERATING_SYSTEM { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "Operating system running on a component"; + } + + identity OPERATING_SYSTEM_UPDATE { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "An operating system update - which should be a subcomponent + of the `OPERATING_SYSTEM` running on a component. An update is + defined to be a set of software changes that are atomically + installed (and uninstalled) together. Multiple updates may be + present for the Operating System. A system should not list all + installed software packages using this type -- but rather + updates that are bundled together as a single installable + item"; + } + + identity BIOS { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "Legacy BIOS or UEFI firmware interface responsible for + initializing hardware components and first stage boot loader."; + } + + identity BOOT_LOADER { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "Software layer responsible for loading and booting the + device OS or network OS."; + } + + identity SOFTWARE_MODULE { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "A base identity for software modules installed and/or + running on the device. Modules include user-space programs + and kernel modules that provide specific functionality. + A component with type SOFTWARE_MODULE should also have a + module type that indicates the specific type of software module"; + } + + identity COMPONENT_OPER_STATUS { + description + "Current operational status of a platform component"; + } + + identity ACTIVE { + base COMPONENT_OPER_STATUS; + description + "Component is enabled and active (i.e., up)"; + } + + identity INACTIVE { + base COMPONENT_OPER_STATUS; + description + "Component is enabled but inactive (i.e., down)"; + } + + identity DISABLED { + base COMPONENT_OPER_STATUS; + description + "Component is administratively disabled."; + } + + identity FEC_MODE_TYPE { + description + "Base identity for FEC operational modes."; + } + + identity FEC_ENABLED { + base FEC_MODE_TYPE; + description + "FEC is administratively enabled."; + } + + identity FEC_DISABLED { + base FEC_MODE_TYPE; + description + "FEC is administratively disabled."; + } + + identity FEC_AUTO { + base FEC_MODE_TYPE; + description + "System will determine whether to enable or disable + FEC on a transceiver."; + } + + identity FEC_STATUS_TYPE { + description + "Base identity for FEC operational statuses."; + } + + identity FEC_STATUS_LOCKED { + base FEC_STATUS_TYPE; + description + "FEC is operationally locked."; + } + + identity FEC_STATUS_UNLOCKED { + base FEC_STATUS_TYPE; + description + "FEC is operationally unlocked."; + } + + // typedef statements + typedef component-power-type { + type enumeration { + enum POWER_ENABLED { + description + "Enable power on the component"; + } + enum POWER_DISABLED { + description + "Disable power on the component"; + } + } + description + "A generic type reflecting whether a hardware component + is powered on or off"; + } + + identity COMPONENT_REBOOT_REASON { + description + "Base entity for component reboot reasons."; + } + + identity REBOOT_USER_INITIATED { + base COMPONENT_REBOOT_REASON; + description + "User initiated the reboot of the componenent."; + } + + identity REBOOT_POWER_FAILURE { + base COMPONENT_REBOOT_REASON; + description + "The component reboots due to power failure."; + } + + identity REBOOT_CRITICAL_ERROR { + base COMPONENT_REBOOT_REASON; + description + "The component reboots due to critical errors."; + } + + typedef component-redundant-role { + type enumeration { + enum PRIMARY { + description + "Component is acting the primary role."; + } + enum SECONDARY { + description + "Component is acting the secondary role."; + } + } + description + "A generic type reflecting the component's redundanty role. + For example, a device might have dual supervisors components + for redundant purpose, with one being the primary and the + other secondary."; + } + + typedef component-redundant-role-switchover-reason-trigger { + type enumeration { + enum USER_INITIATED { + description + "User initiated the switchover, e.g. via command line."; + } + enum SYSTEM_INITIATED { + description + "The system initiated the switchover, e.g. due to + critical errors in the component of the primar role."; + } + } + description + "Records how the role switchover is triggered."; + } + + typedef component-last-poweroff-reason-trigger { + type enumeration { + enum USER_INITIATED { + description + "User initiated the power-off, e.g. via command line."; + } + enum SYSTEM_INITIATED { + description + "The system initiated the power-off, e.g. due to + critical errors in the component of the primary role."; + } + enum POWER_FAILURE { + description + "The last power-off was due to power failure."; + } + } + description + "Records how the last power-off was triggered."; + } +} diff --git a/v1/yang/deps/openconfig-vlan-types.yang b/v1/yang/deps/openconfig-vlan-types.yang new file mode 100644 index 0000000..09af398 --- /dev/null +++ b/v1/yang/deps/openconfig-vlan-types.yang @@ -0,0 +1,283 @@ +module openconfig-vlan-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/vlan-types"; + + prefix "oc-vlan-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines configuration and state variables for VLANs, + in addition to VLAN parameters associated with interfaces"; + + oc-ext:openconfig-version "3.2.0"; + + revision "2022-05-24" { + description + "Remove module extension oc-ext:regexp-posix by making pattern regexes + conform to RFC6020/7950. + + Types impacted: + - vlan-range + - qinq-id + - qinq-id-range"; + reference "3.2.0"; + } + + revision "2020-06-30" { + description + "Add OpenConfig POSIX pattern extensions."; + reference "3.1.1"; + } + + revision "2019-01-31" { + description + "Add TPID_ANY wildcard match and a QinQ list type."; + reference "3.1.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-02-14" { + description + "Fix bug with name of 802.1ad identity."; + reference "3.0.0"; + } + + revision "2017-07-14" { + description + "Move top-level vlan data to network-instance; Update + identities to comply to style guide; fixed pattern + quoting; corrected trunk vlan types; added TPID config to + base interface."; + reference "2.0.0"; + } + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + identity TPID_TYPES { + description + "Base identity for TPID values that can be matched or that override + the VLAN ethertype value"; + } + + identity TPID_0X8100 { + base TPID_TYPES; + description + "Default TPID value for 802.1q single-tagged VLANs."; + } + + identity TPID_0X88A8 { + base TPID_TYPES; + description + "TPID value for 802.1ad provider bridging, QinQ or + stacked VLANs."; + } + + identity TPID_0X9100 { + base TPID_TYPES; + description + "Alternate TPID value."; + } + + identity TPID_0X9200 { + base TPID_TYPES; + description + "Alternate TPID value."; + } + + identity TPID_ANY { + base TPID_TYPES; + description + "A wildcard that matches any of the generally used TPID values + for singly- or multiply-tagged VLANs. Equivalent to matching + any of TPID_0X8100, TPID_0X88A8, TPID_0X9100 and TPID_0x9200. + This value is only applicable where the TPID of a packet is + being matched."; + } + + // typedef statements + + // TODO: typedefs should be defined in a vlan-types.yang file. + typedef vlan-id { + type uint16 { + range 1..4094; + } + description + "Type definition representing a single-tagged VLAN"; + } + + typedef vlan-range { + type string { + // range specified as [lower]..[upper] + pattern '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' + + '40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' + + '[1-9])'; + oc-ext:posix-pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' + + '40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' + + '[1-9])$'; + } + description + "Type definition representing a range of single-tagged + VLANs. A range is specified as x..y where x and y are + valid VLAN IDs (1 <= vlan-id <= 4094). The range is + assumed to be inclusive, such that any VLAN-ID matching + x <= VLAN-ID <= y falls within the range."; + } + + typedef qinq-id { + type string { + pattern + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.' + + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])|\*)'; + oc-ext:posix-pattern + '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.' + + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])|\*)$'; + } + description + "Type definition representing a single double-tagged/QinQ VLAN + identifier. The format of a QinQ VLAN-ID is x.y where X is the + 'outer' VLAN identifier, and y is the 'inner' VLAN identifier. + Both x and y must be valid VLAN IDs (1 <= vlan-id <= 4094) + with the exception that y may be equal to a wildcard (*). In + cases where y is set to the wildcard, this represents all inner + VLAN identifiers where the outer VLAN identifier is equal to + x."; + } + + typedef qinq-id-range { + type union { + type string { + // match cases where the range is specified as x..y.z + pattern + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.' + + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])|\*)'; + oc-ext:posix-pattern + '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.' + + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])|\*)$'; + } + type string { + // match cases where the range is specified as x.y..z + pattern + '(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9]))\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])'; + oc-ext:posix-pattern + '^(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9]))\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])$'; + } + } + description + "A type definition representing a range of double-tagged/QinQ + VLAN identifiers. The format of a QinQ VLAN-ID range can be + specified in two formats. Where the range is outer VLAN IDs + the range is specified as x..y.z. In this case outer VLAN + identifiers meeting the criteria x <= outer-vlan-id <= y are + accepted if and only if the inner VLAN-ID is equal to y - or + any inner-tag if the wildcard is specified. Alternatively the + ange can be specified as x.y..z. In this case only VLANs with an + outer-vlan-id qual to x are accepted (x may again be the + wildcard). Inner VLANs are accepted if they meet the inequality + y <= inner-vlan-id <= z."; + } + + typedef vlan-mode-type { + type enumeration { + enum ACCESS { + description "Access mode VLAN interface (No 802.1q header)"; + } + enum TRUNK { + description "Trunk mode VLAN interface"; + } + } + description + "VLAN interface mode (trunk or access)"; + } + + typedef vlan-ref { + type union { + type vlan-id; + type string; + // TODO: string should be changed to leafref to reference + // an existing VLAN. this is not allowed in YANG 1.0 but + // is expected to be in YANG 1.1. + // type leafref { + // path "vlan:vlans/vlan:vlan/vlan:config/vlan:name"; + // } + } + description + "Reference to a VLAN by name or id"; + } + + typedef vlan-stack-action { + type enumeration { + enum PUSH { + description + "Push a VLAN onto the VLAN stack."; + } + enum POP { + description + "Pop a VLAN from the VLAN stack."; + } + enum SWAP { + description + "Swap the VLAN at the top of the VLAN stack."; + } + // TODO: add push-push, pop-pop, push-swap etc + } + description + "Operations that can be performed on a VLAN stack."; + } + + +} diff --git a/v1/yang/deps/openconfig-vlan.yang b/v1/yang/deps/openconfig-vlan.yang new file mode 100644 index 0000000..905d481 --- /dev/null +++ b/v1/yang/deps/openconfig-vlan.yang @@ -0,0 +1,1001 @@ +module openconfig-vlan { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/vlan"; + + prefix "oc-vlan"; + + // import some basic types + import openconfig-vlan-types { prefix oc-vlan-types; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-if-aggregate { prefix oc-lag; } + import iana-if-type { prefix ianaift; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines configuration and state variables for VLANs, + in addition to VLAN parameters associated with interfaces"; + + oc-ext:openconfig-version "3.2.2"; + + revision "2023-02-07" { + description + "Remove prefix from enums in when statements"; + reference "3.2.2"; + } + + revision "2021-07-28" { + description + "Add prefix to qualify when statements"; + reference "3.2.1"; + } + + revision "2019-04-16" { + description + "Update import prefix for iana-if-type module"; + reference "3.2.0"; + } + + revision "2019-01-31" { + description + "Revise QinQ matching and add input/output VLAN stack operations."; + reference "3.1.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "3.0.1"; + } + + revision "2018-02-14" { + description + "Fix bug with name of 802.1ad identity."; + reference "3.0.0"; + } + + revision "2017-07-14" { + description + "Move top-level vlan data to network-instance; Update + identities to comply to style guide; fixed pattern + quoting; corrected trunk vlan types; added TPID config to + base interface."; + reference "2.0.0"; + } + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping vlan-config { + description "VLAN configuration container."; + + leaf vlan-id { + type oc-vlan-types:vlan-id; + description "Interface VLAN id."; + } + + leaf name { + type string; + description "Interface VLAN name."; + } + + leaf status { + type enumeration { + enum ACTIVE { + description "VLAN is active"; + } + enum SUSPENDED { + description "VLAN is inactive / suspended"; + } + } + default ACTIVE; + description "Admin state of the VLAN"; + } + + } + + grouping vlan-state { + description "State variables for VLANs"; + + // placeholder + + } + + grouping vlan-tpid-config { + description + "TPID configuration for dot1q-enabled interfaces"; + + leaf tpid { + type identityref { + base oc-vlan-types:TPID_TYPES; + } + default oc-vlan-types:TPID_0X8100; + description + "Optionally set the tag protocol identifier field (TPID) that + is accepted on the VLAN"; + } + } + + grouping vlan-tpid-state { + description + "TPID opstate for dot1q-enabled interfaces"; + + // placeholder + + } + + grouping vlan-members-state { + description + "List of interfaces / subinterfaces belonging to the VLAN."; + + container members { + description + "Enclosing container for list of member interfaces"; + + list member { + config false; + description + "List of references to interfaces / subinterfaces + associated with the VLAN."; + + uses oc-if:base-interface-ref-state; + } + } + } + + grouping vlan-switched-config { + description + "VLAN related configuration that is part of the physical + Ethernet interface."; + + leaf interface-mode { + type oc-vlan-types:vlan-mode-type; + description + "Set the interface to access or trunk mode for + VLANs"; + } + + leaf native-vlan { + when "../interface-mode = 'TRUNK'" { + description + "Native VLAN is valid for trunk mode interfaces"; + } + type oc-vlan-types:vlan-id; + description + "Set the native VLAN id for untagged frames arriving on + a trunk interface. Tagged frames sent on an interface + configured with a native VLAN should have their tags + stripped prior to transmission. This configuration is only + valid on a trunk interface."; + } + + leaf access-vlan { + when "../interface-mode = 'ACCESS'" { + description + "Access VLAN assigned to the interfaces"; + } + type oc-vlan-types:vlan-id; + description + "Assign the access vlan to the access port."; + } + + leaf-list trunk-vlans { + when "../interface-mode = 'TRUNK'" { + description + "Allowed VLANs may be specified for trunk mode + interfaces."; + } + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:vlan-range; + } + description + "Specify VLANs, or ranges thereof, that the interface may + carry when in trunk mode. If not specified, all VLANs are + allowed on the interface. Ranges are specified in the form + x..y, where x